linux - 使用 getaddrinfo 进行套接字编程

标签 linux sockets tcp

我在 Linux 的套接字编程中使用 getaddrinfo。我已经创建了一个客户端和一个服务器。目前客户端有一个硬编码的静态端口号。一切正常。

但我希望系统在客户端连接到服务器时动态为其分配端口号。如何使用 getaddrinfo 执行此操作? 我正在使用 TCP 套接字。

最佳答案

只要在调用 connect 之前不要调用 bind,TCP 堆栈就会为客户端分配一个“随机”源端口。如果您需要知道要从哪个端口进行连接(通常不需要),可以在调用 connect 之后调用 getsockaddr

或者,可以调用 bind 指定端口 0。在这种情况下,堆栈将再次为客户端分配一个“随机”未使用的源端口以进行连接。如果您不希望在特殊情况下允许实现选择端口,或者由于某种原因需要指定本地 IP 地址,则首选此选项。

关于linux - 使用 getaddrinfo 进行套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900374/

相关文章:

c# - 服务器架构

javascript - Socket.io - 实现用于私有(private)消息传递的用户套接字关联映射

java - Netty是否暴露了ParentGroup的Backlog中的连接数?

linux - 在 Linux 中使用 find 命令尝试匹配文件名时忽略大小写

c - 定时器回调中的长过程

python - 在 Python 中在相对路径上创建目录并在绝对路径下运行

Erlang 中的 TCP 端口

c# - SharpSsh 命令执行

C# 套接字消息解压

python - 这个 socket.gaierror 是什么意思?