我已经创建了一个带有受体的asio服务器:
m_acceptor(m_ios, asio::ip::tcp::endpoint(asio::ip::address_v4::any(), port_num)其中端口号为3333
此时,netstat -antup命令显示:
13:tcp 0 0 0.0.0.0:3333 0.0.0.0:* LISTEN 26566/./test因此,我相信这意味着本地地址0 0.0.0.0:3333已准备好监听端口3333上的任何连接。
在此之后,我启动了客户机,它创建了ip : 127.0.0.1和端口3333的端点
在此之后,netstat输出是:
tcp 0 0 0.0.0.0:3333 0.0.0.0:* LISTEN 26566/./test
tcp 0 0 127.0.0.1:3333 127.0.0.1:46675 ESTABLISHED 26566/./test
tcp 0 0 127.0.0.1:46675 127.0.0.1:3333 ESTABLISHED 26685/./test
Process 26566 is master process
Process 26685 is slave process我不明白的是,端口46675在上面显示的地址中意味着什么?这肯定代表了客户端,但是这个端口号是从哪里分配给客户机的?这是否意味着客户端已经连接到端口3333,但它自己连接的端口是46675?
发布于 2018-01-06 03:19:54
这是否意味着客户端已经连接到端口3333,但它自己连接的端口是46675?
基本上。它描述了客户端端点。这是BSD/Posix套接字术语。
我不明白的是,端口46675在上面显示的地址中意味着什么?这肯定代表了客户端,但是这个端口号是从哪里分配给客户机的?
它从本地端口范围自动选择(通常是在内核中的TCP堆栈)。例如,在linux上,您可以操作这个范围(如果您有权限):
sudo sysctl -w net.ipv4.ip_local_port_range="60000 61000" (警告:除非你知道自己在做什么,否则不要这么做)。另见port
https://stackoverflow.com/questions/48108197
复制相似问题