Unity3D 使用异步socket通讯

本文介绍了在Unity3D中使用C#进行异步Socket通信的方法,包括异步建立连接、接收数据和发送数据的步骤。通过Begin方法启动后台线程,接收数据时利用回调函数Received处理接收到的数据,并递归调用StartReceived()保持监听。发送数据时,使用内存流写入数据长度,然后通过BeginSend发送。同时提到了NetStream的封装用于网络数据的读写和大小端转换。
摘要由CSDN通过智能技术生成

      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方
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值