gpt4 book ai didi

linux - socket() 和 socketpair() 的域参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:34 27 4
gpt4 key购买 nike

最近在研究Linux socket编程,脑子里的概念还在打转,悬而未决。有人可以确认或纠正我对 socket()socketpair()domain 参数的理解:应该选择 PF_LOCAL(或PF_UNIX)如果希望套接字通信严格在同一台计算机内,如果套接字通信意味着在不同计算机之间,则应选择PF_INET -- 对吗?

最佳答案

不,这是您要使用的通信域。查看man page对于套接字。例如,AF_INET 表示 v4 互联网协议(protocol),AF_INET6 表示 v6 互联网协议(protocol),AF_APPLETALK 表示 AppleTalk,等等。您几乎肯定需要 AF_INETAF_INET6

与您通信的其他程序是否在同一台机器上并不重要,因为您可以使用 Internet 协议(protocol)与本地主机通信。

但是,使用 Internet 域协议(protocol)会降低性能。如果您的应用程序将与同一台机器上的其他应用程序连接,使用AF_LOCAL/AF_UNIX 域会更快,并且会为您提供一些额外的优势,例如文件级 socket 上的安全控制。请注意,如果您走那条路,您将无法在不修改代码的情况下在不同计算机之间使用您的代码。

关于这种选择的利弊的很好的讨论可以在 here 中找到。 .

关于linux - socket() 和 socketpair() 的域参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44314047/

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