Socket 阻塞和非阻塞概念 超时时间

概念

1.阻塞:
       阻塞==同步--->例如:发送消息 直到 发送成功 才能发送下一条消息 
                         接收消息 这条消息接收完毕 才能接收下条消息
2.非阻塞
	   非阻塞==异步-->例如:发送消息 不用等到这条消息发送完毕 就可以发送下条消息
						  接收消息 这条消息不用接收完毕 就能接收下条消息
3.对于C# 的Socket
	   Send/Receive -->是同步方法(阻塞线程的)

	   BeginSend/BeginReceive-->异步方法(非阻塞线程)

4.对于发送或接收数据的超时时间来说
	SendTimeout
	ReceiveTimeout
		只对同步设置有效 对异步设置超时时间是无效的 异步的需要自己实现
		[官方文档:](https://docs.microsoft.com/zh-cn/dotnet/api/system.net.sockets.socket.receivetimeout?redirectedfrom=MSDN&view=netframework-4.8#System_Net_Sockets_Socket_ReceiveTimeout)

5.在异步方法中socket就不需要设置超时时间,并且在unity 的 IL2CPP的 IOS中你若使用异步接收数据,设置ReceiveTimeout
   就会不断的socket异常-->**Operation on non-blocking socket would block**

猜你喜欢

转载自blog.csdn.net/baidu_39447417/article/details/100049128