【发布时间】:2015-10-21 09:08:33
【问题描述】:
使用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 时出现异常。
【问题讨论】:
-
您建议的超时(和其他连接异常)的替代行为是什么?您是否希望即使频道发生某些事情也永远不会调用您的回调?