◎◎◎◎◎◎ 我认为是个很难说清楚的问题
TCP服务器创建一个子进程/线程来处理客户机的请求,同时会创建一个新的套接字描述符,
以后具体的通信都使用新的套接字,
我想知道如何获得服务器使用新的套接字与客户机通信的时候,
其与客户机通信的端口号还是不是监听端口号??????????
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这是因为我使用很多网络工具: netstat, 防火墙, sniffer等来跟踪都显示是服务器为每一个客户都使用的是相同的端口——监听端口。
但是,
1.在服务器这边对每一个新分配的SOCKET(accept返回的),使用 getsockname() 却总是得到相同的端口号,而且不论又多少客户机都是如此,而且该端口号不是监听端口号。
2.在客户机这边对套接字调用 *getpeername()* 应该得到服务器上的 *与客户机连接的端口号* ,但是得到的同样不是服务器上的监听端口号,但是得到的这个端口号却与 "1." 得到的端口号相同。
各位能否解释下:
到底服务器上与客户机连接的端口是怎么回事?是共用监听端口,还是随机分配新端口?