tcpllistener不连接/建立连接

本文关键字:连接 建立 不连接 tcpllistener | 更新日期: 2023-09-27 18:18:21

我试图在没有ManualResetEvent的情况下启动连接,它只是跳过BeginAcceptSocket告诉我按任何键继续,虽然ManualResetEvent我成功地获得了连接,但客户端向我发送了无关的字节。

    static void Main(string[] args)
    {
        tcpListener = new TcpListener(IPAddress.Any, 8484);
        tcpListener.Start();
        tcpListener.BeginAcceptSocket(AcceptSocket, tcpListener);
    }
    private static void AcceptSocket(IAsyncResult async)
    {
        new Client(tcpListener.EndAcceptSocket(async));
        tcpListener.BeginAcceptSocket(AcceptSocket, null);
    }

本例考虑Client作为传入字节的Acceptor

tcpllistener不连接/建立连接

BeginAcceptSocket为异步;它没有运行在与Main相同的线程上,因此,您的程序在接收到连接之前就结束了。要解决这个问题,要么转换为同步的Accept,要么保持主线程活动,以防止程序关闭。我建议您在使用异步方法之前仔细阅读异步方法的含义。

我需要看到你的ManualResetEvent代码来回答这个问题,但是"无关的字节"对我来说没有任何意义,因为我不知道你在期待什么,也不知道你得到了什么。此外,我认为在使用ManualResetEvent的同时,在完全相同的地方也使用异步方法,这确实违背了使用异步方法的初衷。