当前位置: 技术问答>linux和unix
问下网络编程中使用readv和writev~~
来源: 互联网 发布时间:2016-09-21
本文导语: 这两个函数都有个 iovec结构的参数,我想问下readv在收的时候,假如iovec结构指向的buf中,第一个,第二个都接收满了,成功了,第三个的时候接收出现错误怎么办??还继续接收还是直接返回错误,假如是返回错误...
这两个函数都有个 iovec结构的参数,我想问下readv在收的时候,假如iovec结构指向的buf中,第一个,第二个都接收满了,成功了,第三个的时候接收出现错误怎么办??还继续接收还是直接返回错误,假如是返回错误的话,那前面接收好的buf怎么处理,还有就是出错部分的数据怎么处理?直接在socket通道丢掉还是等待下次再readv的时候接收???
还有就是writev在写入的时候,假如,iovec结构很多buf,写到某一个的时候,socket通道的数据满了,那writev是等待继续发还是怎么???
还有就是writev在写入的时候,假如,iovec结构很多buf,写到某一个的时候,socket通道的数据满了,那writev是等待继续发还是怎么???
|
1、readv的情形
如何处理取决于应用程序自己,这和单个缓冲区的read没有本质的区别。
2、writev的情形
socket通道满时,writev通常会阻塞,或者出错(如果socket描述符设置为非阻塞),这也和单个缓冲区的write没有本质的区别
如何处理取决于应用程序自己,这和单个缓冲区的read没有本质的区别。
2、writev的情形
socket通道满时,writev通常会阻塞,或者出错(如果socket描述符设置为非阻塞),这也和单个缓冲区的write没有本质的区别
|
据我的理解,readv就是从一个地方读出,写入多个缓冲区。writev就是从多个缓冲区读取数据,写入一个目标点。
没研究过源码
没研究过源码