3

C で記述されたサーバーとクライアントのプログラムがあり、正常に動作していますが、以下で説明する動作の理由を突き止めることができません。

server.c

server_address.sin_family = AF_INET;
server_address.sin_port = htons(9374);
server_address.sin_addr.s_addr = htonl(INADDR_ANY);  
server_len = sizeof(server_address);    
bind(server_sockfd, (struct sockaddr *)&server_address, server_len);

getsockname (server_sockfd, (struct sockaddr *)&server_address, &server_len);
printf("server port = %d\n", server_address.sin_port); 
printf("Server Waiting......\n");
listen(server_sockfd, 5);

client.c

address.sin_family = AF_INET;
address.sin_port = htons(9374);

int length, result;
length = sizeof(address);

result = connect(sockfd, (struct sockaddr *)&address, length);

getsockname(sockfd, (struct sockaddr *)&address, &length);
printf("Connecting to Port = %d \n", address.sin_port);

サーバー側の出力:

[root@dhcppc1 Socket]# ./server
server port = 40484 
Server Waiting......

クライアント側の出力:

[root@dhcppc1 Socket]# ./client
Connecting to Port = 18576 

私の質問は:

同じポート番号 ( 9374) と操作がサーバー コードとクライアント コードに実装されていますが、なぜ異なるポート番号 (サーバーでは 40484、クライアントでは 18576 など) が表示されるのですか?

4

1 に答える 1