/******************************
作者:cncoderalex
博客:http://blog.youkuaiyun.com/cncoderalex
*******************************/
1 对于一条A到B的链路,只能做两件事:
(1)A阻塞的发送信息,并阻塞的接收B的回复信息。
(2)A发送信息,无需B回复信息。
如果B要主动的向A发送一些信息,必须另外建立链路。
2 Socket中有OnReceive,这说明另一端会主动发一些数据过来,当前端会被动的接收数据。这与1所讲的链路一定不能是同一条链路。
3 对于Socket来讲,同一时刻只能有一个发送操作在进行,否则会引起发送数据的叠加。
举一个极端的例子,B的发送缓冲区中还有一堆数据正在发送,这时A发送请求,要求B回复数据,然后A就在这里阻塞的接收,这时B收到的数据一定是错的。
这说明A请求到的回复数据与B的主动发送一定不能在一条链路。
4 AsyncSelect EventSelect模型会自动把套接字设置为非阻塞模式,此外被动OnReceive时,一次没将缓冲区数据收完,会继续收到对应的事件或消息,即OnReceive会继续被触发。