C#TcpClient的开始/结束方法

问题描述 投票:0回答:1

我试图更好地理解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(游戏开发)项目中,因此无法阻止主线程。我想使用...

c# sockets tcp connect
1个回答
0
投票

TcpClient没有设置连接超时的属性。有发送和接收超时的属性,但没有连接超时的属性。等待连接超时的一种常用方法是从BeginConnect等待IAsyncResult或使用ConnectAsync

© www.soinside.com 2019 - 2024. All rights reserved.