1

クライアント/サーバーが自分で複数のソケット接続を受け入れるようにする方法を理解しようとして、私は心を壊しています。

接続はデータグラム (UDP) で、現時点では Works Nice に基づいて実装されてgetaddrinfo(3) man pageいますが、各クライアントは初期接続のプロセスが処理されるのを待つ必要があります。

select について聞いたことがありますが、そのマニュアルページには次のように書かれています:

select() を使用すると、素朴なプログラマーがスレッド、フォーク、IPC、シグナル、メモリ共有などを使用してより複雑な方法で解決しようとする、移植可能で効率的な方法で多くの問題を解決できます。

もっと:

Linux 固有の epoll(7) API は、多数のファイル記述子を監視する場合に、select(2) および poll(2) よりも効率的なインターフェースを提供します。

それで、そうですか?epoll は単に select よりも優れているのですか? それとも依存?それが依存する場合、何に依存しますか?

epoll の man ページには部分的なサンプルがあるので、理解しようとしています。

現在、(サーバー上で)あるスレッドでリッスンし、別のスレッドに書き込むにはスレッドが必要だと思います。しかし、部分的なメッセージの完了を制御するにはどうすればよいでしょうか? 2 つのクライアントがインターリーブされた部分的なメッセージを送信する場合、どのように識別しますか? sockaddrで?それだけが必要な場合は、プールなしで管理できますが、なぜepollを使用するのですか?

マルチ接続のクライアント/サーバー UDP アプリについて、作成方法、またはどこで学べばよいか説明してくれる人はいますか?

4

1 に答える 1