当前位置: 技术问答>linux和unix
socket 编程时,write的写入的数据大于socket缓冲区,会有什么结果??
来源: 互联网 发布时间:2017-03-09
本文导语: socket 编程时,write的写入的数据大于socket缓冲区,会有什么结果?? | TCP: 1,阻塞fd将会阻塞直到可以发出,如果超过MTU将会分片,这些你都不需要关心,你发多长的数据都行,不会因为数据...
socket 编程时,write的写入的数据大于socket缓冲区,会有什么结果??
|
TCP:
1,阻塞fd将会阻塞直到可以发出,如果超过MTU将会分片,这些你都不需要关心,你发多长的数据都行,不会因为数据长而导致致命的错误,会自动分片。
2,非阻塞fd将会返回-1,errno==EAGAIN。
UDP:
1,阻塞fd,如果网卡满会阻塞,如果超过UDP最大包限制将会出错返回-1.
2,非阻塞fd,网卡满返回-1,errno=EAGAIN. 超过UDP最大包限制一样会出错。
网络开发根本没在乎这些, 你只要知道检查返回值,相信返回值和错误码即可,健壮的编程毫无问题。
1,阻塞fd将会阻塞直到可以发出,如果超过MTU将会分片,这些你都不需要关心,你发多长的数据都行,不会因为数据长而导致致命的错误,会自动分片。
2,非阻塞fd将会返回-1,errno==EAGAIN。
UDP:
1,阻塞fd,如果网卡满会阻塞,如果超过UDP最大包限制将会出错返回-1.
2,非阻塞fd,网卡满返回-1,errno=EAGAIN. 超过UDP最大包限制一样会出错。
网络开发根本没在乎这些, 你只要知道检查返回值,相信返回值和错误码即可,健壮的编程毫无问题。