1

私はソケットプログラミングが初めてなので、この質問が基本的なものであれば許してください。どこにも答えが見つかりませんでした。

新しいソケットが必要になるとはどういうことですか?

たとえば、同じポートの同じソケット fd で送受信できるようです。1つのソケットでポートXXXXで送信し、ポートYYYYで受信できますか? そうでない場合、ソケットはホスト/ポートの組み合わせに固有のものですか?

洞察をありがとう!

4

2 に答える 2

2

ポート番号はローカル プロパティであり、受信側マシンのそのポート宛ての着信データのソケット エンドポイントを識別するのに役立ちます。各マシンには、プロトコルの種類 (TCP または UDP) ごと、およびファミリの種類 (IPv4 または IPv6) ごとに 64K のポートがあります。

UDP を使用すると、さまざまなポートにある多くのクライアントに送信 (および受信) することができます。したがって、次の接続の場合:

UDP_socketA (port p1) <---------> UDP socketB (port p2)
     |
     |
     |
     |
UDP socketC (port p3)

したがって、socketA は、異なるポート番号に座っていても、socketB と socketC にデータを送信できます。それが機能する方法は、UDP ソケットでは、通常 sendto() API を使用して、各パケットの IP アドレスとポート番号を指定できるようにすることです。したがって、1 つのパケットをポート B に送信し、次のパケットをポート C に送信できます。

ただし、TCP の場合はそうではありません。接続が確立されると、socketA と socketB の間で言うと、方法はありません。これらのソケットのいずれかが socketC と通信することはできません。

TCP_socketA (port p1) <---------> TCP socket B (port p2)
         |
         |
         |
         |
    TCP socketC (port p3)
于 2013-10-10T18:43:03.710 に答える
2

ソケットは、IP アドレスとポートで構成される「エンドポイント」を確立します。

はい、単一のソケットは単一のホスト/ポートの組み合わせに固有です。

読書の推奨事項:

Beej のネットワーク プログラミング ガイド:

Unix ネットワーク プログラミング: Stevens 他:

于 2013-10-10T17:34:04.627 に答える