Q:本地同时与多个主机建立连接,如果这些主机同时发生数据到本地,而本地又没有调用recv进行处理,会出现什么情况?
A:系统为每个socket建立一个缓存,ip层组包进程在收到数据包后会把数据放入socket缓存。调用recv将socket缓存的内容copy到程序定义的缓存,如果通信进程不能及时recv,将导致该socket缓存满。如果用tcp协议,socket缓存满以后,系统会向对方发出错误消息,对方回收到wsaewouldblock错误,如果是用udp协议,系统会把该socket的以后收到的数据丢弃~