socket write 返回
时间: 2023-09-25 14:12:10 浏览: 49
socket write函数返回值有以下几种情况:
1. 当write()函数返回值大于0时,表示成功写入了指定数量的数据。
2. 当write()函数返回值为0时,表示对端已经关闭了socket,需要关闭这个socket,否则会导致socket泄露。\[1\]
3. 当write()函数返回值为-1时,一般需要判断errno。如果errno == EINTR,表示系统当前中断了,可以直接忽略。如果errno == EAGAIN或者EWOULDBLOCK,表示非阻塞socket,直接忽略;如果是阻塞的socket,一般是读写操作超时了,还未返回。这个超时是指socket的SO_RCVTIMEO与SO_SNDTIMEO两个属性。所以在使用阻塞socket时,不要将超时时间设置得过小,否则无法判断是socket连接真的断开了还是网络抖动。一般情况下,阻塞的socket返回了-1,都需要关闭重新连接。\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [tcp的socket读写返回值的处理](https://blog.csdn.net/zhaozhigen/article/details/119327969)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]