15

ソケットの意味がよくわかりません。サーバーは特定のコンピューターで実行され、特定のポート番号にバインドされたソケットを持ちます。サーバーは、クライアントが接続要求を行うためにソケットをリッスンして待機します。サーバーが接続を受け入れると、同じローカル ポートにバインドされた新しいソケットを取得し、リモート エンドポイントをクライアントのアドレスとポートに設定します。接続されたクライアントのニーズに対応しながら、接続要求に対して元のソケットをリッスンし続けることができるように、新しいソケットが必要です。

それで、ソケットはメモリ内に作成されたクラスですか?クライアント接続ごとに、このクラスの新しいインスタンスがメモリ内に作成されますか? 内部ソケットにはローカルポートと接続しているクライアントのポートとIP番号が書かれています。誰かがソケットの定義について詳しく説明してくれますか?

ありがとう

4

5 に答える 5

14

ソケットは事実上ファイル ハンドルの一種であり、その背後にネットワーク セッションが存在する可能性があります。

他のファイルハンドルと同じように(ほとんど)読み書きでき、セッションの反対側との間でデータを送受信できます。

あなたが説明している特定のアクションは、ソケットのサーバー側に対するものです。サーバーは、着信接続を受け入れるために使用できるソケットを確立 (バインド) します。受け入れられると、確立されたセッション用の別のソケットが取得されるため、サーバーは元のソケットに戻って受信接続をリッスンできます。

それらがメモリ内でどのように表現されるかは、抽象化レベルによって異なります。

C の最下位レベルでは、それらは単なるファイル記述子であり、小さな整数です。ただし、低レベルのソケットの動作をカプセル化する高レベルのSocket クラスがある場合があります。

于 2013-04-26T09:36:10.413 に答える
2

ネットワーク ソケットは、ネットワーク上で実行される 2 つのプログラム間の通信フローにおける 1 つのエンドポイントです。

ソケットは、IP アドレスとポート番号の組み合わせです。

これは、インターネットのコネクションレス コンテキストにおけるサーバー アプリケーションからのソケット要求の典型的なシーケンスです。この場合、サーバーは多くのクライアント要求を処理し、即時の要求を処理するより長く接続を維持しません。

実装手順

サーバー側

initilize socket() 
--
bind() 
-- 
recvfrom() 
--
(wait for a sendto request from some client) 
-- 
(process the sendto request) 
--
sendto (in reply to the request from the client...for example, send an HTML file)

対応するソケット要求のクライアント シーケンスは次のようになります。

socket() 
--
bind() 
--
sendto() 
--
recvfrom()

パイプライン接続を確立できるように..詳細は http://www.steves-internet-guide.com/tcpip-ports-sockets

于 2018-12-07T10:13:46.640 に答える