http和socket通信的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http和socket通信的区别相关的知识,希望对你有一定的参考价值。

其实这样比是有问题的,http实际上是一种应用级协议,常用的是http1.0和http 1.1协议。而socket则是一个连接,它直接在链路层上进行连接。在该连接的基础之可以实现各种应用级协议。如通过socket可以实现ftp协议、http、https、NetBios、Win、Iron等等,甚至于可以实现蓝牙(蓝牙连接在.net中不被支持,是因为socket所需参数的协议簇中枚举中没有蓝牙,但可以直接通过数据,实现与蓝牙的通信)。所以http是一个协议与Socket连接是没有可比性的,在.net中,可实现http协议的连接。
正是因为socket功能的强大,所以对于socket编程一般用于特殊一点的协议或高性能网络要求的情况下才使用这种编程。如果是一般的tcp/ip,在.net中已经实现了其功能封装。例如WebClient实现http/https,再如.net 4.5新增的HttpClient也可以实现同的功能。但这些功能较为狭窄,那么在.net中的可插入协议是一个中庸的选择。目前实现的有HttpWebRequest/FtpWebRequest。并且可继承WebRequest实现自己的可插入协议。

也就是说,如果我们与httpClient或WebClient与Scoket相比的话,WebClinet/HttpClient是实现特定功能的Socket封装,它减少开发周期,但底层还是Socket。如果WebRequest与Socket相比的话,WebRequest是实现特定协议的Socket封闭,并可实现可插入协议。换句来说,WebClient是完完全全的一个通信类,而WebRequest则算是一个协议开发类(它已经实现了FtpWebRequest及HttpWebRequest),而Socket则是底层开发。
参考技术A http是客户端用http协议进行请求,发送请求的时候需要封装http请求头,并绑定请求的数据,服务器一般有web服务器配合(当然也非绝对),http的请求方式为客户端主动发起请求,服务器才能给响应,一次请求完毕后则断开连接,以节省资源.服务器不能主动给客户端发起响应.iphine主要使用类是NSURLConnection
Socket是客户端跟服务器直接使用Socket"套接字"进行连接,并没有规定连接后断开,所以客户端和服务器可保持连接通道,双方都可以主动发送数据,一般在游戏开发或股票开发这种要求即时性很强并且保持发送数据量比较大的场合使用.主要使用类是CFSocketRef本回答被提问者采纳
参考技术B HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。
Socket:Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。

以上是关于http和socket通信的区别的主要内容,如果未能解决你的问题,请参考以下文章

C++ socket编程 和 MFC socket编程 有啥区别??

Socket TCP HTTP 的区别

Socket与URL通信比较

C++ socket编程 和 MFC socket编程 有啥区别??

优秀的国产高性能TCP/UDP/HTTP开源网络通信框架——HP-Socket

雷达 tcp ip socket c++