我正在用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

10-07 13:57