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