c# BeginConnect回调在未连接时被触发
本文关键字:连接 BeginConnect 回调 | 更新日期: 2023-09-27 18:18:39
使用tcpClient.BeginConnect
触发异步回调,即使没有任何客户端可以连接。然后我得到一个关于尝试.GetStream()
的异常。
public void SetupSocket() {
try {
tcpClient = new TcpClient();
tcpClient.BeginConnect(host, port, ConnectCallback, tcpClient);
Console.WriteLine("begin connect");
}
catch (Exception e) {
return;
}
}
private void ConnectCallback(IAsyncResult result) {
if (OnClientEvent != null)
OnClientEvent(this, new ClientEventArgs(Action.Connect));
Console.WriteLine("get stream");
stream = tcpClient.GetStream();
Console.WriteLine("got stream");
BeginReadAsync();
}
输出get stream
,然后关于在tcpClient连接之前尝试使用GetStream的例外。
传递给BeginConnect
的回调在连接操作完成时调用,无论连接到端点是否成功。
在BeginConnect
回调中,您需要使用收到的IAsyncResult
对象调用EndConnect
,以完成连接操作。在调用EndConnect
之前,套接字是不可用的;在此之后,如果套接字成功连接,则可以继续进行读写操作。