首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >socket编程与Http编程的区别

socket编程与Http编程的区别
EN

Stack Overflow用户
提问于 2013-02-27 17:12:31
回答 4查看 81.1K关注 0票数 129

套接字编程和Http编程有什么不同?有谁能帮帮忙吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-27 18:48:33

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

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

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

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

票数 125
EN

Stack Overflow用户

发布于 2013-02-27 17:18:00

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

MSDN示例:

代码语言:javascript
运行
复制
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 ();
} 

有了套接字,你就可以在更低的层次上实际控制连接和发送/接收原始字节。

示例:

代码语言:javascript
运行
复制
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});
票数 30
EN

Stack Overflow用户

发布于 2020-06-23 15:42:48

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

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

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

现在,在套接字编程中,您可以创建一个套接字,将其绑定到一个ip地址和一个端口号以充当端口号,并告诉它遵循http、ssh、ftp或任何您希望使用套接字进行的通信。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15108139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档