5

実用的な意味でお願いしています。TCPでは、accept()はすべてのconnect()に新しいソケットを提供します。1つのサーバーポートのみで複数の同時通信が可能です。

問題は、UDPでそのような便利さがない理由です。UDPはコネクションレス型であると言わないでください。したがって、論理的には、accept()はそれとは何の関係もありません(基盤となるIPはとにかくコネクションレス型です)。

結果の1つは、多くのUDPポートを適用する必要があることです。これにより、ファイアウォールの設定が複雑になる可能性があります。それで私の次の質問、ポートと多重化に関するマルチクライアントUDPアプリケーションの解決策は何ですか?場合によっては、クライアント情報をUDPパケットに埋め込んで、サーバーを区別することを考えています。しかし、本質的にaccept()がないと、特定のTo Doは困難です(たとえば、OpenSSLを使用したUDP)。

洞察力をありがとう。

4

1 に答える 1

4

UDP はコネクションレス プロトコルであるため、必要ありません。すべての着信 UDP データグラムでリモート アドレス情報を取得するため、それが誰からのものかがわかるため、接続ごとのソケットで通知する必要はありません。「多くの UDP ポートを適用する必要はありません」。必要なのは 1 つだけです。

于 2013-02-15T22:17:36.863 に答える