簡単なクライアント サーバー プログラムを作成しました。クライアントプログラムでクライアントのポート番号を出力できます。値は動的です。
しかし、サーバープログラムで印刷しようとすると、クライアントではなくサーバーのポート番号が表示されます。
connfd = accept(listenfd, (struct sockaddr*) &cliaddr, &clilen);
cout<<"Server: Server's Port: "<< ntohs(servaddr.sin_port)<<endl; /*23112*/
cout<<"Server: Client's Port: "<< ntohs(cliaddr.sin_port)<<endl; /*23112*/
クライアントプログラムでも同じものを使用していますが、ランダムポートを正しく出力しています。私はこのようにそれらを初期化しました:
struct sockaddr_in cliaddr, servaddr;
socklen_t clilen = sizeof(cliaddr);