2

TCP 接続と UDP 接続の両方を受け入れるチャット サーバーを作成しています。ここでは、サーバーが 1 つのクライアントのみの接続を許可すると仮定します。チャットできる人はまだいません。

しかし、どうすればそれを行うことができますか?

 int sock = socket( PF_INET, SOCK_STREAM, 0 );

私が理解しているように、セットアップの本質的な違いはこれです--

 int sock = socket( PF_INET, SOCK_DGRAM, 0 );

しかし、どうすれば両方を同時に行うことができますか? 2 つのポートを設定し、接続のために両方で交互にリッスンしますか?

4

2 に答える 2

2

select() 関数を見てください。複数のファイル記述子を「監視」できます。ヒント: UDP には接続がないため、「リスナー」ソケットはありません。TCP の場合、接続を受け入れることができるリスナー ソケットを開きます。select() を使用して、「リッスン」ソケットを監視できます。

于 2012-04-11T21:39:11.823 に答える
-1

TCP と UDP は 2 つの異なるものです。TCP は、データが送信されることを確認し、配信を保証します。ただし、UDP はこの機能を提供しません。それらは異なり、データの受信も異なるため、2 つの ServerSockets をセットアップする必要があります。1 つは TCP 接続を処理し、もう 1 つは UDP 接続を処理します。

UDP は信頼性が低く、送信したいデータの配信を保証しないため、重要な情報を送信する場合は UDP を使用しないことをお勧めします。ただし、TCP プロトコルと UDP プロトコルの両方を使用することが絶対に必要な場合は、サーバーをマルチスレッド化して、両方のタイプの接続をリッスンし、両方を受け入れるようにすることをお勧めします。

注: Web サイトは http:// と https:// で開始できることに気付きましたか? 宛先は同じですが、送信されるデータのタイプが異なり、別のポート番号が使用されます (http の場合は 80、https の場合は 443)。これは、サーバーを 2 つの異なるポートでホストする必要がある理由を簡単に説明したものです。

于 2012-04-11T21:35:58.010 に答える