C# 中Socket的异步方法,都是以Begin开始表示开启异步调用,以End开始表示结束异步调用线程。根据官方文档的介绍,Begin方法会在后台开启线程操作,完成后回调注册函数。分为三个部分,建立连接,接收数据,发送数据,全部使用异步调用。
首先,异步建立连接。
public static void SocketConnect(string server, int port, Action onConnected)
{
IPAddress ipAddress = Dns.GetHostEntry(server).AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);
socket = new Socket(ipEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
socket.NoDelay = true;
ADebug.Log("[Socket start connecting]");
socket.BeginConnect
(
ipEndPoint,
(IAsyncResult ar) =>
{
ADebug.Log("[Socket connected]");
socket.EndSend(ar);
onConnected();
StartReceived();
},
null // no need
);
}
解析地址是标准做法。BeginConnect方