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

TCP服务器在ubuntu 14.04上使用了错误的端口号,c,sockets,tcp,network-programming,C,Sockets,Tcp,Network Programming,我正在用C进行套接字编程,当我在地址INADDR_ANY和端口号2000上启动我的tcpserver时,它启动得很好。但是使用命令“netstat-tulpn”,它显示服务器被分配了端口号53255。当客户端使用服务器端口号53255连接时,可以连接到此服务器,但当客户端尝试连接到端口号“2000”时,连接被拒绝 有人能解释一下为什么系统给我的tcpserver分配了错误的端口号,而不是我想要使用的2000端口号 vm@vm:~/Documents/csepracticals/webserver

我正在用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\u PORT)
而不是
SERVER\u PORT

我确信答案就在你的代码中,不幸的是你忘了添加到问题中…你需要以网络字节顺序指定端口(即使用
htons(SERVER\u PORT)
)@Ctx,这是有效的…:如果每次都是53255,这不是随机的。准确点。这是错误的(我的意思不是你想象的那样),但这不是随机的。胡说八道。只有指定了零,而没有指定时,才会发生这种情况。要么是随机的,要么是53255。下定决心吧。你的问题特别指出是53255,这是2000年的字节交换。这就是为什么你接受的答案是有效的。