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
BeginAcceptSocket
为异步;它没有运行在与Main
相同的线程上,因此,您的程序在接收到连接之前就结束了。要解决这个问题,要么转换为同步的Accept
,要么保持主线程活动,以防止程序关闭。我建议您在使用异步方法之前仔细阅读异步方法的含义。
我需要看到你的ManualResetEvent
代码来回答这个问题,但是"无关的字节"对我来说没有任何意义,因为我不知道你在期待什么,也不知道你得到了什么。此外,我认为在使用ManualResetEvent
的同时,在完全相同的地方也使用异步方法,这确实违背了使用异步方法的初衷。