套接字编程和Http编程之间的区别

时间:2013-02-27 09:12:31

标签: sockets network-programming

套接字编程和Http编程有什么区别?有人可以帮忙吗?

5 个答案:

答案 0 :(得分:93)

HTTP是一种应用程序协议。它基本上意味着HTTP本身不能用于向/从远程端点传输信息。相反,它依赖于底层协议,在HTTP的情况下是TCP。

enter image description here

如果您有兴趣,可以阅读有关OSI layers的更多信息。

另一方面,套接字是大多数操作系统提供的能够与网络通信的API。套接字API支持从传输层向下的不同协议。

这意味着如果您想使用TCP,则使用套接字。但您也可以使用套接字使用HTTP进行通信,但是您必须根据HTTP规范(RFC2616)对消息进行解码/编码。由于对于大多数开发人员来说这可能是一项艰巨的任务,因此我们也在开发人员框架(如.NET)中准备好了客户端,例如WebClientHttpWebRequest类。

答案 1 :(得分:21)

使用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});

答案 2 :(得分:8)

  

HTTP连接

     
      
  • HTTP连接是在套接字上运行的协议。
  •   
  • HTTP连接是网络连接的更高级抽象。
  •   
  • 使用HTTP连接,实现会处理所有这些更高级别的详细信息,并简单地发送HTTP请求(某些标头   信息)并从服务器接收HTTP响应。
  •   
     

套接字连接

     
      
  • 套接字用于在系统之间传输数据。它只是将两个系统连接在一起,一个IP地址就是地址   通过基于IP的网络上的机器。
  •   
  • 使用套接字连接,您可以为两个系统之间的网络连接设计自己的协议。
  •   
  • 使用Socket连接,您需要处理TCP / IP连接的所有较低级别的详细信息。
  •   

答案 3 :(得分:1)

要使两个端点能够相互通信,它们都应遵循一组规则。在计算机中,这些规则集称为协议。

例如,对于像浏览器这样的端点,对于像Web服务器这样的端点,它们都应遵循一套称为http的规则或协议,以便能够进行通信和交易信息。因此在万维网和这种通信中,只有那些基于此http协议进行交谈的人才能成功地相互交谈。

socket只是一个端点。它可以遵循http协议,作为客户端请求页面时在www中进行通信,也可以充当侦听连接的服务器。也许它可以遵循另一组规则或协议,例如ssh,ftp并以其他方式进行通信。

现在在套接字编程中,您可以制作一个套接字,将其绑定到ip地址和端口号以充当端口号,并根据所需的通信告诉它遵循http,ssh,ftp或您想要的任何内容使用您的套接字。

答案 4 :(得分:0)

HTTP编程或HTTP请求用于松散耦合和平台中立语言技术通信,其中使用套接字编程,其中系统具有语言规范协议