我试图更好地理解C#套接字类。我正在使用TcpClient对象。我将其用于Unity(游戏开发)项目中,因此无法阻止主线程。我想使用带有Begin / End形式的方法,例如BeginConnect()和EndConnect()。
我正在这样做:
public class TcpTest : MonoBehaviour
{
private TcpClient m_TcpClient = null;
private void Start()
{
m_TcpClient = new TcpClient();
m_TcpClient.BeginConnect("127.0.0.1", 40000, OnConnectAsyncCallback, null);
}
private void OnConnectAsyncCallback(IAsyncResult i_AsyncResult)
{
m_TcpClient.EndConnect(i_AsyncResult);
MyAsyncDebug.Log("Connect callback received.");
}
}
我正在使用hercules作为套接字调试工具。我已经用它启动了一个TCP服务器,一切都很好。然后,我在大力士上停止了TCP服务器。我已经重新运行了代码,并且期待一个错误或异常。没什么,代码只是启动BeginConnect(),并且不再调用AsyncCallback。在调用BeginConnect方法之后,我也尝试过启动服务器,但是它不起作用。
我如何知道Begin Connect是否失败(也许目标无法到达或其他任何原因?)>
我无法理解它们的设计方式(我已经阅读了MSDN文档)。
谢谢您,对不起新手的问题!
我试图更好地理解C#套接字类。我正在使用TcpClient对象。我将其用于Unity(游戏开发)项目中,因此无法阻止主线程。我想使用...
TcpClient没有设置连接超时的属性。有发送和接收超时的属性,但没有连接超时的属性。等待连接超时的一种常用方法是从BeginConnect等待IAsyncResult或使用ConnectAsync