日期:2014-05-16  浏览次数:20748 次

socket 编程时,write的写入的数据大于socket缓冲区,会有什么结果??
socket 编程时,write的写入的数据大于socket缓冲区,会有什么结果??

------解决方案--------------------
TCP:
1,阻塞fd将会阻塞直到可以发出,如果超过MTU将会分片,这些你都不需要关心,你发多长的数据都行,不会因为数据长而导致致命的错误,会自动分片。

2,非阻塞fd将会返回-1,errno==EAGAIN。

UDP:
1,阻塞fd,如果网卡满会阻塞,如果超过UDP最大包限制将会出错返回-1.
2,非阻塞fd,网卡满返回-1,errno=EAGAIN. 超过UDP最大包限制一样会出错。


网络开发根本没在乎这些, 你只要知道检查返回值,相信返回值和错误码即可,健壮的编程毫无问题。