首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C‘`sendto`’与‘写’

C‘`sendto`’与‘写’
EN

Stack Overflow用户
提问于 2016-02-08 21:58:52
回答 1查看 5.7K关注 0票数 7

如果我错了,请纠正我,但我对发送原始数据包的理解不可避免地被定义为在数组中缓冲字节数组,并将其写入套接字。然而,到目前为止,我看到的大多数示例代码都倾向于使用sendto,很少使用send,而且除了自己使用write之外,我从未见过其他代码。我是不是遗漏了什么?这种明显的专注于复杂的代码是什么?

在我看来,在处理原始套接字时,sendsendto是显而易见的选择,为什么要使用write

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 22:10:22

sendto通常用于未连接的UDP套接字或原始套接字。它接受一个参数,指定数据包的目标地址/端口。sendwrite没有这个参数,因此无法告诉数据去向。

send与TCP套接字和连接的UDP套接字一起使用。由于已经建立了连接,因此不需要指定目标,而且实际上该函数没有一个参数。

虽然write函数可以在可以使用send的地方使用,但它缺少能够在TCP上启用某些行为的flags参数。它也不返回与send相同的错误代码集,因此如果出错,您可能得不到有意义的错误代码。理论上,如果设置了原始套接字选项,也可以在原始套接字上使用write,但这也不可取,因为它不支持与send相同的错误代码。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35280161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档