Linux socket 编程中 write 函数使用的注意事项

本文对比了write和send函数在数据发送过程中的不同特性。write函数可能会导致数据发送不完整,影响数据的“原子性”。而send函数虽然也可能被打断,但在实际应用中能更好地保证数据的完整性和一致性。
摘要由CSDN通过智能技术生成

   很多人都以为使用write和使用send发送数据是一样的,确实都可以发送数据,但是有一点需要注意:

   write 函数不能保证发送的数据一次都能发送完 ,可能只发送了一部分(当内核发送缓冲区满的时候),这点就破坏了数据发送的“原子性”,这个原子操作只的是单个包发送的过程中不会被其他发送操作影响。如果中间被打断,那么在同一个 socket 上的其他线程的发送操作就有可能在你间断后,进入发送,导致最后的包混乱。所以最好还是使用 send 来发送。

   但也不是说 send 不会被打断,当发送的过程中有信息到来的时候,send操作还是会被打断。

转载于:https://my.oschina.net/sincoder/blog/348881

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值