请教下socket和http在客户端网络请求中的区别,请大神求教 30C

在http中,不同的接口,可以采用http://www.test.com/testA,http://www.test.com/testB 这样来区分不同的接口,那么在socket中,是如何来区分的,也是一样吗??还是说通过端口号!!!请大神求教

8个回答

socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)

HTTP是应用层协议,主要解决如何包装数据。

Socket是对TCP/IP协议(传输层)的封装,是一个调用接口(API),一般一个socket必须包含一个IP地址+一个传输协议(TCP/UDP)+一个端口号(1到65535), 比如 (100.1.1.20, TCP, port 1030)就是一个socket。
客户端和服务器之间的每个连接都要一个唯一的Socket。

HTTP是应用层协议, 运行在TCP之上 .

你可以用socket实现http的客户端和服务器端。两者可以说是超集和子集的关系。所以问“区别”是不妥当的。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复lf644206005: 你可以用socket实现http的客户端和服务器端。而你已经知道“http设计多个接口”,那么问题就解决了。
2 年多之前 回复
lf644206005
lf644206005 就是当我使用socket来进行通信的时候,如何来像http一样设计多个接口
2 年多之前 回复

端口是用来针对TCP和UDP的,可以认为是每一次tcp或udp通信的内存缓冲区(tcp是有连接的所以很容易理解这一点,udp无连接但是其有
可以监听的功能),而http和socket都是tcp之上构建的(一个无连接,一个有连接),在服务端上这一点体现很好,但在客户端(特指浏览器),
由于以前的技术限制,socket通常使用http来模拟(使用poll等技术),比如socket.IO的前端库,而HTML5后,采用html5的新式内核会用tcp
直接构建socket

由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

http和socket的区别请查看:http://blog.csdn.net/dlgdark/article/details/78177490

socket主要通过端口号来区分

socket通常通过四元组来区分:本端地址、本端端口号、对端地址、对端端口号。另外还有一个是协议号,如果是raw socket ,只通过协议号、本端地址、对端地址来区分

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问