本文转自网络
HTTP 和 Socket 的区别
要弄明白 http 和 socket 首先要熟悉网络七层:物 数 网 传 会 表 应,如图1
如图1
HTTP 协议:超文本传输协议,对应于应用层,用于如何封装数据.
TCP/UDP 协议:传输控制协议,对应于传输层,主要解决数据在网络中的传输。
IP 协议:对应于网络层,同样解决数据在网络中的传输。
传输数据的时候只使用 TCP/IP 协议(传输层),如果没有应用层来识别数据内容,传输后的协议都是无用的。
应用层协议很多 FTP,HTTP,TELNET等,可以自己定义应用层协议。
web 使用 HTTP 作传输层协议,以封装 HTTP 文本信息,然后使用 TCP/IP 做传输层协议,将数据发送到网络上。
一、HTTP 协议
http 为短连接:客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。通常的做法是,不需要任何数据,也要保持每隔一段时间向服务器发送"保持连接"的请求。这样可以保证客户端在服务器端是"上线"状态。
HTTP连接使用的是"请求-响应"方式,不仅在请求时建立连接,而且客户端向服务器端请求后,服务器才返回数据。
二、Socket 连接
要想明白 Socket,必须要理解 TCP 连接。
TCP 三次握手:握手过程中并不传输数据,在握手后服务器与客户端才开始传输数据,理想状态下,TCP 连接一旦建立,在通讯双方中的任何一方主动断开连接之前 TCP 连接会一直保持下去。
Socket 是对 TCP/IP 协议的封装,Socket 只是个接口不是协议,通过 Socket 我们才能使用 TCP/IP 协议,除了 TCP,也可以使用 UDP 协议来传递数据。
创建 Socket 连接的时候,可以指定传输层协议,可以是 TCP 或者 UDP,当用 TCP 连接,该Socket就是个TCP连接,反之。
Socket 原理
Socket 连接,至少需要一对套接字,分为 clientSocket,serverSocket 连接分为3个步骤:
(1) 服务器监听:服务器并不定位具体客户端的套接字,而是时刻处于监听状态;
(2) 客户端请求:客户端的套接字要描述它要连接的服务器的套接字,提供地址和端口号,然后向服务器套接字提出连接请求;
(3) 连接确认:当服务器套接字收到客户端套接字发来的请求后,就响应客户端套接字的请求,并建立一个新的线程,把服务器端的套接字的描述发给客户端。一旦客户端确认了此描述,就正式建立连接。而服务器套接字继续处于监听状态,继续接收其他客户端套接字的连接请求.
Socket为长连接:通常情况下Socket 连接就是 TCP 连接,因此 Socket 连接一旦建立,通讯双方开始互发数据内容,直到双方断开连接。在实际应用中,由于网络节点过多,在传输过程中,会被节点断开连接,因此要通过轮询高速网络,该节点处于活跃状态。
很多情况下,都是需要服务器端向客户端主动推送数据,保持客户端与服务端的实时同步。
若双方是 Socket 连接,可以由服务器直接向客户端发送数据。
若双方是 HTTP 连接,则服务器需要等客户端发送请求后,才能将数据回传给客户端。
因此,客户端定时向服务器端发送请求,不仅可以保持在线,同时也询问服务器是否有新数据,如果有就将数据传给客户端。
参考原文:http://www.cnblogs.com/xclidongbo/p/4032904.html?utm_source=tuicool&utm_medium=referral
分享到:
相关推荐
这是关于http和socket的区别 详细描述,http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的面向对象的协议,常基于TCP的连接方式
http和socket简介和对比,有哪些区别,差异等等的。
NULL 博文链接:https://zhoujianghai.iteye.com/blog/1195988
为大家开发 服务端 开导一下 望能打动你的心
此案例采用modbus-tcp协议与设备进行通信,且分别应用Socket与第三方组件NModbus两种方式进行通信。
socket阻塞与非阻塞的区别 socket socket阻塞与非阻塞的区别
如果您找到了此组件,也必然知道 Socket 和 AJAX 的区别。 迈云 JavaScript Socket 类可以在网页上创建原生Socket,并与服务器端通讯。Socket具有持久、实时的优点,适合IM、聊天室、网络游戏、实时更新、实时推送...
使用SocketTool工具测试与欧姆龙FINS通信,发送数据和回复数据的报文记录,对第一次使用欧姆龙的人有很大的帮助;
开源一份HPSocket的tcp的高效传输方案,自动组包分包,我精简了HPSocket4C.dll文件删除了所有的代理,http,udp等等一大堆的东西,dll文件又经过upx压缩仅80kb大小,只保留tcp pack部分。pack本来就是可靠传输,一般...
TCP与UDP区别(socket编程)
IP协议与socket之间的区别
安卓端Socket连接的方法,aidl+server,可以下载串口调试助手自己测试,可接受和发送消息
demo实现socket的通信 包括 tcp 客户端和服务端之间的通信 udp客户端和服务端之间的通信
这样做的结果就出现了插口接口(Berkeley Socket),这个系统被称为Berkeley UNIX 或BSD UNIX。(TCP/IP 首次出现在BSD 4.1 版本release 4.1 of Berkeley Software Distribution)。 由许多计算机厂商,都采用了...
项目描述:一款模拟群体聊天室的应用,该应用提供给用户一个群体聊天的平台,可以通过设置不同的用户名以区别不同用户发送出来的消息。应用通过 AsyncUdpSocket发送和接受消息,通过判断IP显示非本机IP发送的其他消息...
Unix环境下利用Socket和消息队列构建应用通信平台
NULL 博文链接:https://hengstart.iteye.com/blog/842529
QT_的socket_与_Linux_的socket通信
相信有不少朋友都会有这个疑问,之前的消息一直将AMD下一代处理器接口称为Socket M2,但之后又纷纷改叫Socket AM2,这两这之间有何差别呢? 实际上,AM2就是M2。据AMD内部文件显示,AMD因为版权问题而无法使用...
TcpClient类和TcpListener类属于.NET框架下网络通信中的应用层类,为Socket通信提供了更简单,对用户更为友好的接口。应用层类比位于底层的Socket类提供了更高层次的抽象,封装了套接字的创建,不需要处理连接的细节...