zoukankan      html  css  js  c++  java
  • socket http区别

    HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的

    tcp协议: 对应于传输层

    ip协议: 对应于网络层

     
    TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。

    Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。

     

    http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;

    即HttpResponse result = httpClient.send(),收到返回值后,会自动断开socket,TCP连接。

     

    socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息~~具体心跳消息格式是开发者自己定义的。

     

    思考一下:客户端一次发很多消息给服务端,那么Server是怎么知道client的一次消息有没有发送完了?

    分析:首先,Server端根本不知道Client给它发什么,即不可能从Server端来处理。

    两种思路:

    1、TCP通信中,每次客户端发送完数据,就发个FIN标志;

    2、HTTP协议中,有协议头,里面有length等信息,SERVER端可以根据这些信息来判断是否收完了数据!

     

     

     

  • 相关阅读:
    程序员应该看的书籍列表
    完整版QQ(腾讯)开放平台操作指南(包含:qq登录能力获取等等)
    使用Electron构建跨平台的抓取桌面程序
    LinqHelper拓展
    20161014001 DataGridView 单元格内容 自动计算
    20161013001 DataGridView 数据转 DataTable
    20161011001 treeView 递归
    20160929001 Guid生成
    20160815001
    20160715001
  • 原文地址:https://www.cnblogs.com/wyqfighting/p/3009545.html
Copyright © 2011-2022 走看看