getstream()永远不会返回
本文关键字:返回 永远 getstream | 更新日期: 2023-09-27 18:07:11
我真的很困惑。我能够将TCPClient异步连接到tcp服务器。在我的回调中,我现在想开始读取一些数据,但是当我执行stream = tcpClient.GetStream();
时,我的程序并没有完全挂起,它什么也不做。它不会转到方法的下一行,但UI仍在运行(它是Unity,可能是多线程或其他东西)。
public void SetupSocket() {
try {
tcpClient = new TcpClient(host, port);
tcpClient.BeginConnect(host, port, ConnectCallback, tcpClient);
}
catch (Exception e) {
// stuff happens
return;
}
}
private void ConnectCallback(IAsyncResult result) {
if (ConnectedToServer != null)
ConnectedToServer(this, new ServerEventArgs("Connected to server."));
Debug.Log("Where am I?"); // it does get here
try {
stream = tcpClient.GetStream();
}
catch (InvalidOperationException e){
Debug.Log(e); // no exception
}
Debug.Log("Hello?"); // never gets here
BeginReadData();
}
public void BeginReadData() {
Debug.Log(stream.CanRead); // No log here!
if (stream.CanRead) {
stream.BeginRead(tcpStateObject.buffer, 0, tcpStateObject.bufferSize, EndReadData, stream);
}
}
我在这一点上真的迷路了。我可以在我的服务器上看到我连接了,当我断开时。我向客户端发送两条消息。它曾经使用同步套接字,但我想要异步。
答案如下
我连接了两次
tcpClient = new TcpClient(host, port);
tcpClient.BeginConnect(host, port, ConnectCallback, tcpClient);