套接字编程和 Http 编程的区别是什么? 有人能帮忙吗?
对于 HTTP,您使用高级 HTTP 协议(在套接字上工作)。它是无会话的,这意味着在连接关闭后(在 HTTP 1.1中,可以使用持久连接) ,发送类似 GET google.com的文本请求并接收文本或二进制数据
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。
如果你感兴趣,你可以阅读更多关于 OSI 层的内容。
另一方面,套接字是大多数操作系统提供的能够与网络通信的 API。套接字 API 支持来自传输层和下层的不同协议。
这意味着如果您想要使用 TCP,那么您需要使用套接字。但是您也可以使用套接字使用 HTTP 进行通信,但是您必须根据 HTTP 规范(RFC2616)对消息进行解码/编码。因为这对于大多数开发人员来说是一项巨大的任务,所以我们在开发框架中也有现成的客户端(比如。NET) ,例如 WebClient或 HttpWebRequest类。
WebClient
HttpWebRequest
HTTP 编程或 HTTP 请求用于松散耦合和 与平台无关的语言技术通信,而套接字编程用于系统具有 语言规范协议的地方
HTTP 连接 HTTP 连接是在套接字上运行的协议。 HTTP 连接是网络连接的高级抽象。 使用 HTTP 连接,实现将处理所有这些更高级别的细节,只需发送 HTTP 请求(一些头部) 信息) ,并从服务器接收 HTTP 响应。 套接字连接 Socket 用于在系统之间传输数据。它只是将两个系统连接在一起,一个 IP 地址就是 通过基于 IP 的网络的机器。 通过套接字连接,您可以为两个系统之间的网络连接设计自己的协议。 使用 Socket 连接时,您需要关注 TCP/IP 连接的所有底层细节。
HTTP 连接
套接字连接
为了使两个端点能够相互通信,它们都应该遵循一套规则。在计算机中,这些规则被称为协议。
例如,对于像浏览器这样的端点和像 Web 服务器这样的端点,它们都应该遵循一套称为 http 的规则或协议,以便能够通信和交易信息。所以在万维网和这种通信中,只有那些基于这种 http 协议进行通信的人才能成功地互相通信。
套接字只是一个端点。它可以遵循 http 协议在 www 中进行通信,作为客户端请求页面,也可以作为监听连接的服务器。或者它可以遵循另一组规则或协议,如 ssh、 ftp,并以其他方式进行通信。
现在在套接字编程中,你可以创建一个套接字,将它绑定到一个 ip 地址和一个端口号,作为一个端口号,并告诉它遵循 http、 ssh、 ftp 或任何你想要的通信,你想要使用你的套接字。
Socket 编程是一种介于应用层和 TCP 层之间的中间件。它能够携带应用程序层中的任何数据,甚至是 HTTP 数据。