-1

C++ソケットプログラミングについていくつか質問があります。私が尋ねた方法が間違っている場合は、深く掘り下げて修正するのを手伝ってください。

  1. OSレベルのポートごとに1つのファイル記述子がありますか。
  2. 複数のポートが同じネットワークインターフェイスをどのように使用しますか?プロセッサのスレッドのように切り替わりますか?では、使用するポートの数が増えた場合、特定のポートのデータを遅らせることはできますか?
  3. ソケットを作成すると、OSレベルで何が起こりますか?IOファイル記述子への参照を作成しますか?
  4. 次に、bind()を呼び出すとOSレベルで何が起こりますか。ソケットとNICアドレスをどのように相互接続しますか?
  5. 再利用可能なソケットを使用するとどうなりますか?複数のソケットが1つのポートにどのようにバインドしますか?それらはスレッドのように1つのポートで切り替えますか?
  6. bind()なしで特定のアドレスまたはポートに送信または受信する場合?ロジックOSがアドレスとポートを選択する方法と内容。
4

3 に答える 3

3

ソケットの「聖書」、Wリチャードスティーブンス: Unixネットワークプログラミングよりも影響力のあるネットワークプログラミングテキストを見つけるのは難しいでしょう。ソケットプログラミングは一夜にしてやってくるものではないので、期待しないでください。それは規律であり、明白で単純です。そして、すべての分野のように、それは研ぎ澄まされる必要があります。

于 2012-09-24T04:47:19.683 に答える
2

OS レベルのポートごとに 1 つのファイル記述子がありますか。

いいえ。リッスン ソケットで接続を受け入れるサーバーの場合、10,000 個のファイル記述子がすべて同じローカル ポート番号を参照している可能性があります。

複数のポートが同じネットワーク インターフェイスをどのように使用しますか? プロセッサ内のスレッドのように切り替えていますか? 使用しているポートが増えた場合、特定のポートのデータが遅延することはありますか?

ここで答えるには複雑すぎます。

ソケットを作成すると、OS レベルで何が起こりますか? IO ファイル記述子への参照を作成しますか?

それらは非常によく似たものであり、一部のオペレーティング システムでは同じものですらあります。1 つはソケットを参照し、もう 1 つは開いているファイルを参照します。

次に、bind() を呼び出すと OS レベルで何が起こりますか。

ソケットには、ポートと IP アドレスが割り当てられます。IP アドレスは 0.0.0.0 にすることができます。指定されたポートがゼロの場合、システムは空いているポートから 1 つを選択します。

ソケットと NIC アドレスを相互接続する方法

上記を参照。

再利用可能なソケットを使用するとどうなりますか?

「再利用可能なソケット」のようなものはありません。ポートの再利用について話しているのですか?

bind() なしで特定のアドレスまたはポートに送受信するときは? 論理 OS がアドレスとポートを選択する方法と内容。

Abind()は、自分でまだ実行していない場合、バックグラウンドで実行されます。したがって、上記と同じ規則が適用さbind()れます。

于 2012-09-24T10:53:59.340 に答える
0

あなたが求めているのは基本的な概念であり、サーバー、クライアント、TCP、UDP、ローカルホスト、リモートホストなどの用語を理解する必要があります。socket() は、プロセスとトランスポート層の間のインターフェースを作成し、ソケットの特性を作成して伝えます。bind() は、ソケットをローカル アドレスにバインドします。man ページ 1 または 2 を確認すると、包括的な回答が見つかります。

于 2012-09-24T06:45:26.083 に答える