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

套接字编程和 Http 编程的区别是什么? 有人能帮忙吗?

87622 次浏览

对于 HTTP,您使用高级 HTTP 协议(在套接字上工作)。它是无会话的,这意味着在连接关闭后(在 HTTP 1.1中,可以使用持久连接) ,发送类似 GET google.com的文本请求并接收文本或二进制数据

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

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

enter image description here

如果你感兴趣,你可以阅读更多关于 OSI 层的内容。

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

这意味着如果您想要使用 TCP,那么您需要使用套接字。但是您也可以使用套接字使用 HTTP 进行通信,但是您必须根据 HTTP 规范(RFC2616)对消息进行解码/编码。因为这对于大多数开发人员来说是一项巨大的任务,所以我们在开发框架中也有现成的客户端(比如。NET) ,例如 WebClientHttpWebRequest类。

HTTP 编程或 HTTP 请求用于松散耦合和 与平台无关的语言技术通信,而套接字编程用于系统具有 语言规范协议的地方

HTTP 连接

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

套接字连接

  • Socket 用于在系统之间传输数据。它只是将两个系统连接在一起,一个 IP 地址就是 通过基于 IP 的网络的机器。
  • 通过套接字连接,您可以为两个系统之间的网络连接设计自己的协议。
  • 使用 Socket 连接时,您需要关注 TCP/IP 连接的所有底层细节。

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

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

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

现在在套接字编程中,你可以创建一个套接字,将它绑定到一个 ip 地址和一个端口号,作为一个端口号,并告诉它遵循 http、 ssh、 ftp 或任何你想要的通信,你想要使用你的套接字。

Socket 编程是一种介于应用层和 TCP 层之间的中间件。它能够携带应用程序层中的任何数据,甚至是 HTTP 数据。