gpt4 book ai didi

c - 套接字,为什么 ip 以整数格式发送?

转载 作者:行者123 更新时间:2023-12-02 08:31:40 24 4
gpt4 key购买 nike

问题

我想知道为什么我们可以通过使用 hton 之类的函数来连接到套接字来处理字节序,而我们本可以在普通字符数组中发送 ip。

假设我们要连接到 184.54.12.169

对此有一个解释,但我不明白为什么我们使用整数而不是 char,因此让我们自己陷入字节序 hell 。

我认为 char out_ip[] = "184.54.12.169"理论上可以成功。

请向我解释我在这里没有得到的微妙之处。

最佳答案

基本网络 API 是低级函数。这些是围绕内核系统调用的非常薄的包装器。删除这些低级函数,强制一切都使用字符串,对于像这样的低级 API 来说是相当糟糕的,特别是考虑到 C 中的字符串处理是多么繁琐。作为一个具体的障碍,即使 IP 字符串也不是固定长度的,所以处理它们比普通的 32 位整数要复杂得多。将字符串处理移至内核确实完全违背了内核的本意,处理任意用户字符串实际上是用户空间问题。

因此,您想创建更高级别的函数来接受字符串并在库中进行转换。但是,在核心库中各处添加这种更高级别的“便利”功能会使它们膨胀,因为传递 IP 号码当然不是这种便利的唯一地方。在成为标准(官方的,如 POSIX,或事实上的)库的一部分后,这些函数将需要永远维护并随处包含。

因此,删除低级函数并不是一个真正的选择,在同一个库中为更高级别的 API 添加更多函数也不是一个好的选择。

因此解决方案是使用另一个库来提供更高级别的网络 API,例如可以直接处理地址字符串。不确定 C 有什么,但它几乎是其他语言的给定,它们也有内置的“真实”字符串,因此使用它们并不麻烦。

关于c - 套接字,为什么 ip 以整数格式发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048108/

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