web-dev-qa-db-ja.com

ソケットプログラミングとHttpプログラミングの違い

ソケットプログラミングとHttpプログラミングの違いは何ですか?誰でも助けてくれますか?

100

HTTPはアプリケーションプロトコルです。基本的に、HTTP自体を使用してリモートエンドポイントとの間で情報を転送することはできません。代わりに、HTTPの場合はTCPである基礎となるプロトコルに依存しています。

enter image description here

興味がある場合は、 OSIレイヤー の詳細をご覧ください。

一方、ソケットは、ほとんどのオペレーティングシステムがネットワークと通信できるように提供するAPIです。ソケットAPIは、トランスポート層以降のさまざまなプロトコルをサポートします。

つまり、TCPを使用する場合は、ソケットを使用します。ただし、ソケットを使用してHTTPを使用して通信することもできますが、HTTP仕様( RFC2616 )に従ってメッセージをデコード/エンコードする必要があります。これはほとんどの開発者にとって大きなタスクになる可能性があるため、開発者フレームワーク(.NETなど)で、たとえばWebClientクラスまたはHttpWebRequestクラスなどのクライアントも用意しました。

96
jgauffin

HTTPでは、高レベルのHTTPプロトコルを使用します(ソケットの上で動作します)。セッションレスです。つまり、接続が閉じられた後、GET google.comのようなテキストリクエストを送信し、代わりにテキストまたはバイナリデータを受信します(HTTP 1.1の永続的な接続が利用可能です)

MSDNの例:

public static void Main (string[] args)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create (args[0]);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse ();

    Console.WriteLine ("Content length is {0}", response.ContentLength);
    Console.WriteLine ("Content type is {0}", response.ContentType);

    // Get the stream associated with the response.
    Stream receiveStream = response.GetResponseStream ();

    // Pipes the stream to a higher level stream reader with the required encoding format. 
    StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);

    Console.WriteLine ("Response stream received.");
    Console.WriteLine (readStream.ReadToEnd ());
    response.Close ();
    readStream.Close ();
} 

ソケットを使用すると、レベルを下げて、実際に接続を制御し、生バイトを送受信します。

例:

var remoteEndpoint=new IPEndPoint(IPAddress.Loopback, 2345);
var socket = new Socket(remoteEndpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(remoteEndpoint);
socket.Send(new byte[] {1, 2, 3, 4});
22
Anri

HTTP接続

  • HTTP接続は、ソケットで実行されるプロトコルです。
  • HTTP接続は、ネットワーク接続の高レベルの抽象化です。
  • HTTP接続を使用すると、実装はこれらすべての高レベルの詳細を処理し、HTTP要求(ヘッダー情報)を送信し、サーバーからHTTP応答を受信するだけです。

ソケット接続

  • ソケットは、システム間でデータを転送するために使用されます。 2つのシステムを接続するだけで、IPアドレスはIPベースのネットワーク上のマシンのアドレスです。
  • ソケット接続を使用すると、2つのシステム間のネットワーク接続用に独自のプロトコルを設計できます。
  • ソケット接続では、TCP/IP接続の下位レベルの詳細をすべて処理する必要があります。
10
Amit Yadav

HTTPプログラミングまたはHTTPリクエストは、疎結合およびプラットフォーム中立言語テクノロジ通信に使用されます。システムがlanguage仕様プロトコルを持つソケットプログラミングが使用される場合

0
Mukund