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

Inn*_*ker 108 sockets network-programming

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

jga*_*fin 101

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

在此输入图像描述

如果您有兴趣,可以阅读有关OSI图层的更多信息.

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

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

  • 是的.TCP确保一切都到达(传输层),HTTP告诉Web应用程序应该做什么. (3认同)
  • 所以两者都使用 TCP,只是 HTTP 以预定义的格式响应,套接字提供从套接字另一端返回的数据,对吗? (2认同)

Anr*_*nri 22

使用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 ();
} 
Run Code Online (Sandbox Code Playgroud)

使用套接字,您可以降低级别并实际控制连接并发送/接收原始字节.

例:

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});
Run Code Online (Sandbox Code Playgroud)


Ami*_*dav 11

HTTP连接

  • HTTP连接是在套接字上运行的协议.
  • HTTP连接是网络连接的更高级抽象.
  • 通过HTTP连接,实现负责处理所有这些更高级别的细节,并简单地发送HTTP请求(一些头信息)并从服务器接收HTTP响应.

套接字连接

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


小智 5

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

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

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

现在,在套接字编程中,您可以创建一个套接字,将其绑定到 ip 地址和端口号以充当端口号,并告诉它遵循 http、ssh、ftp 或基于您想要使用的通信的任何内容。插座为.