0
我在linux下的gcc中實現了一個多線程的echo服務器。我將服務器套接字綁定到端口號3000
。以下是我用於綁定的代碼。服務器套接字不綁定到指定的端口
EchoServer.c
struct sockaddr_in sock_var;
int serverFileDiscriptor=socket(AF_INET,SOCK_STREAM,0);
sock_var.sin_addr.s_addr=inet_addr("0.0.0.0");
sock_var.sin_port=3000;
sock_var.sin_family=AF_INET;
bind(serverFileDiscriptor,(struct sockaddr*)&sock_var,sizeof(sock_var));
但是我看到,服務器,如下所示地結合端口號47115
。
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:47115 0.0.0.0:* LISTEN 0 79942 22843/./EchoServer
按我的理解,只有指定端口號0
將套接字綁定到一個隨機的未使用的端口。這可能是什麼原因?服務器以root用戶身份啓動,我確認端口號3000
未使用且可用。
這與'sockaddr_in.sin_port'被指定爲網絡字節順序中的端口','man'頁面中的*有關* – EJP
@EJP - 感謝您的澄清。 – Learner