TCP 服务器在 ubuntu 14.04 上采用了错误的端口号

TCP server takes wrong port number on ubuntu 14.04

我正在用 C 进行套接字编程,当我在地址 INADDR_ANY 和端口号 2000 上启动我的 tcpserver 时,它启动良好。但是使用命令 'netstat -tulpn' ,它显示服务器分配了端口号 53255。客户端在使用服务器端口号 53255 连接时能够连接到此服务器,但在尝试连接到端口号“2000”时连接被拒绝。

有人能解释一下为什么系统给我的 tcpserver 分配了错误的端口号,而不是我想使用的端口号 2000。

vm@vm:~/Documents/csepracticals/webserver/TCPWebserver$ netstat -tulpn
...
...
tcp        0      0 0.0.0.0:53255           0.0.0.0:*               LISTEN      16291/webserver`


server_addr.sin_family = AF_INET;
server_addr.sin_port = SERVER_PORT; /*#defined to 2000*/
server_addr.sin_addr.s_addr = INADDR_ANY;
bind(master_sock_tcp_fd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr));

您应该使用 htons(SERVER_PORT) 而不是 SERVER_PORT