概念
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**