gpt4 book ai didi

C `sendto` 与 `write`

转载 作者:太空狗 更新时间:2023-10-29 14:58:42 27 4
gpt4 key购买 nike

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

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

最佳答案

sendto 通常与未连接的 UDP 套接字或原始套接字一起使用。它采用指定数据包的目标地址/端口的参数。 sendwrite 没有这个参数,所以没有办法告诉数据去哪里。

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

虽然 write 函数可以用在可以使用 send 的地方,但它缺少可以启用某些行为的 flags 参数TCP套接字。它也不会返回与 send 相同的一组错误代码,因此如果出现问题,您可能无法获得有意义的错误代码。理论上,如果设置了 IP_HDRINCL 套接字选项,您也可以在原始套接字上使用 write ,但同样不可取,因为它不支持与 发送

关于C `sendto` 与 `write`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35280161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com