同じ IP を持つ異なるポートの同じソース ファイルで listen(scokfd1) と connect(sockfd2) の両方を呼び出すことは可能ですか?
どうもありがとう、AB
はい。実際、ローカルでネットワーク アプリケーションをテストしている場合 (つまり、IP アドレス 127.1、localhost を使用) は、非常に一般的です。
各アドレス ファミリ (IPv4/IPv6) について、TCP はすべてのホストに対して 64K ポートを維持します。したがって、これらから 2 つのポートを選択すると、1 つはリッスン用、もう 1 つは接続用になります。bind(sockfd2) を発行しない場合、connect(sockfd2) は暗黙的に (64K プールから) 一時ポートを暗黙的に割り当てることに注意してください。主なことは、TCP の場合、4 つのタプル (src_ip、src_port、dest_ip、dest_port) が一意である必要があるということです。