【socket】 read和recv区别、write和send区别

185 篇文章 1 订阅
84 篇文章 1 订阅

1.问chatGPT应用:socket read和recv区别?

答:

socket read() 和 recv() 在读取网络数据方面有以下主要区别:
1. 接口不同
- read() 是标准IO函数,来自unistd.h,可以用于文件和socket。
- recv() 是socket特有的系统调用,来自sys/socket.h。
2. 返回值处理
- read() 返回已读取的字节数,0表示EOF,-1表示错误。
- recv() 返回实际读取的字节数,0表示连接关闭,-1表示错误。
3. 读取字节数
- read() 每次都会尝试读取请求的全部字节数。
- recv() 可能只读取部分数据,需要检查返回值。
4. 作用对象
- read() 用于所有文件描述符,包括socket。
- recv() 只能用于socket描述符。
5. 标志差异
- recv() 支持MSG_PEEK等额外标志。
总结:
- 用于socket时,recv()更为合适,可以处理消息边界,支持标志。
- 但read()更通用,可以用于文件和socket。
所以根据使用场景选择合适的接口,以获取最佳性能和功能。

2.问chatGPT应用:socket write和send区别?

答:

socket write() 和 send() 在发送网络数据方面有以下主要区别:
1. 接口不同
- write() 是标准IO函数,来自unistd.h,可以用于文件和socket。
- send() 是socket特有的系统调用,来自sys/socket.h。
2. 返回值处理
- write() 返回已发送的字节数,0表示EOF,-1表示错误。
- send() 返回实际发送的字节数,0表示连接关闭,-1表示错误。
3. 发送字节数
- write() 每次都会尝试发送请求的全部字节数。
- send() 可能只发送部分数据,需要检查返回值。
4. 作用对象
- write() 用于所有文件描述符,包括socket。 
- send() 只能用于socket描述符。
5. 标志差异
- send() 支持MSG_NOSIGNAL等额外标志。
总结:
- 用于socket时,send()更为合适,可以处理消息边界,支持标志。
- 但write()更通用,可以用于文件和socket。
所以根据使用场景选择合适的接口,以获取最佳性能和功能。

参考:

网络编程socket accept函数的理解_如何判断socket accpt到数据_普通网友的博客-CSDN博客

socket阻塞与非阻塞,同步与异步,IO模型,select与poll和epoll总结 - 小家电维修 - 博客园 (cnblogs.com)

socket编程之select_socket select_soulsoul_god的博客-CSDN博客

socket中write,read,send,recv函数_socket write函数_ForeverDirect的博客-CSDN博客

socket编程中write、read和send、recv_一个socketrecv和write能并行吗_刘拉拉的book的博客-CSDN博客

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

109702008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值