1

指定したポートでクライアントを受け入れる必要があるサーバーを作成する必要があります。
例:Aポート1337で接続したいので、サーバーはポート1337でリッスンします。1992Bでは、サーバーは1992でリッスンします。

これをどう扱うかわかりません。次のようなシステムを作成する必要があります:
-すべてのクライアントが同じポートに接続します:XXXX;
-クライアントの最初のパケットは、必要なポートを指定します;
-サーバーは新しいポートでバインド/リッスン/受け入れます;
-サーバーはクライアントに問題ないと応答します;
-クライアントはポートXXXXでの接続を停止し、新しいポートでの接続を開始します。
この種のシステムが良いかどうかはわかりませんが、他にどのようにすればよいかわかりません。
ありがとう、フロリアン

4

2 に答える 2

1

ポートマッピングの余地を維持する、ある種のマスタープロセスまたは中央テーブルが必要になります。そもそも接続するには、クライアントがマスタープロセスまたはある種の「エントリールーム」に接続する必要があります。次に、部屋から部屋へ移動するときに、接続する必要のあるポートを調べて、次のポートを参照します。必要に応じて、すべての中央情報をデータベースに保存できます。

于 2012-12-17T15:14:53.180 に答える
0

クライアントが他のポートに関する要求を伝達する場合は、クライアントが接続できるように、少なくとも1つの標準ポートを開いておく必要があります。明らかに開いている必要はありません。たとえば、一部の非表示sshシステムのように、UDPパケットを静かに受け入れることができます。新しいポートがバインドされて準備ができているという何らかの応答を生成する場合は、TCPでも機能します。

いずれにせよ、適切なフレームワークがあれば、複数のポートでリッスンすることは特に難しいことではありません。libeventは、どのように始めるかの一例です。

ただし、標準のポートと不明な数の動的ポートを開いているのは奇妙に思えます。これらはいつ閉鎖しますか?彼らは最終的にタイムアウトしますか?リッスンコールは本質的に短期的なものですか?

于 2012-12-17T14:48:22.970 に答える