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