0
私はlinuxの下でgccにマルチスレッドエコーサーバを実装しています。サーバーソケットをポート番号3000
にバインドします。以下は私のコードがバインディングに使用されています。サーバソケットが指定されたポートにバインドしない
EchoServer.c私は以下に示すように、サーバがポート番号47115
に結合していることがわかりしかし
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));
。私の理解あたりとして
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