http与socket是网络编程中最为重要的概念,不管是客户端还是服务端,都是最为重要的部分,以下简述两者的关系和区别(个人见解)。

Http

定义

基于应用层的超文本传输协议。通常承载于TCP/IP协议之上,有时也承载于TLS或SSL协议层之上,即https。

特点

  • 必须是客户端请求,服务端才能响应,无法由服务端自主发起。
  • 网络连接为短连接,在请求结束后,就会自动释放本次连接。

优点

  • 基于应用层的接口,简单易用,非常容易上手,对开发者要求较低

缺点

  • 传输速度有限,数据量较大
  • 对服务器性能要求较高
  • 数据传输过程中安全性有限

适用范围

  • 需要快速开发的应用
  • 对数据实时交互性要求不太高的应用
  • 对数据安全性不是太高要求的应用
  • 对服务器性能较差的应用

Socket

定义

基于TCP/IP的网络API,处于传输层,用于提供给程序员操作TCP/IP网络传输的应用程序接口。通常称作"套接字",实现服务器和客户端之间的物理连接,并进行数据传输。是应用层和传输层之间的桥梁。

特点

  • 建立socket连接至少需要一对套接字(socket),一个运行在客户端,一个运行在服务端
  • 通常Socket连接是基于TCP连接的,因此属于长连接
  • Socket一旦建立连接,通信双方即可持续相互发送数据内容,直到双方连接断开

优点

  • 传输数据可自定义,数据量很小
  • 数据传输时间段,性能高
  • 多用于客户端与服务端之间的数据实时交互
  • 可以使用加密手段,数据安全性很高

缺点

  • 相对于http协议传输,开发量较大
  • 对开发人员的开发水平要求较高,增加开发量

适用范围

  • 适用于对传输速度要求高的应用,如网络游戏
  • 适用于对数据安全性要求较高的应用中,如银行内部数据交互
  • 对产生流量巨大的应用

Http与Socket小谈的更多相关文章

  1. DevStore开发人员服务有奖征文:小谈新浪微博开放平台

    DevStore开发人员服务有奖征文:小谈新浪微博开放平台 笔者接入新浪微博开发平台也有一段时间了,对整个平台的接入也算比較熟悉,新浪提供了统一的API接口,能够让开发人员更方便的使用API来实现自己 ...

  2. 小谈Java里的线程

    今天,我们来谈一谈Java里的线程. 一.进程与线程的基本概念 大家可能没听过线程这个概念,但是相信,用计算机的朋友都听过进程这个概念.打开电脑的任务管理器,我们就可以看到许多进程.它们主要分为三类, ...

  3. 【.Net】Socket小示例

    引言 项目中用到了Socket,这里做个控制台小示例记录一下. Client 客户端的Receive用了异步方法,保持长连接,可以随时发送消息和响应服务端的消息,如下 static string Cl ...

  4. 小谈Scrum敏捷开发流程

    一晃眼,有两年没有写博客了,回顾前两年,各种奔波,各种忙碌,也有不少的收获.从今天开始,我要把这些收获都分享在这里. 其实这两年,对我影响最大的是开发流程.总所周知,一个好的开发流程,对于项目的进行, ...

  5. iOS 小谈开发者中的个人、组织(公司、企业)账号

    苹果对开发者主要分为3类:个人.组织(公司.企业).教育机构.即: 1.个人(Individual) 2.组织(Organizations) 组织类又分为2个小类: (1)公司(Company) (2 ...

  6. 小谈 - web模仿手机打电话与正则表达式

    昨天遇到了一个很棘手的问题,就是手机端调用web端的页面,如果用编辑器插入的内容页面中有电话的的数据就要变一下格式,让手机端可以实现拨号的功能. 研究了半天就是没一点头绪,但是偶尔看到数据中每一个电话 ...

  7. 小谈React、React Native、React Web

    React有三个东西,React JS 前端Web框架,React Native 移动终端Hybrid框架,React Web是一个源码转换工具(React Native 转 Web,并之所以特别提出 ...

  8. scales小谈grunt

    Grunt是基于Node.js的项目构建工具.它可以自动运行你所设定的任务.Grunt拥有数量庞大的插件,几乎任何你所要做的事情都可以用Grunt实现. 一头野猪映入眼帘,意:咕噜声 中文网站:htt ...

  9. PHP 小谈静态用法

    1.静态的表现形式,在PHP中定义一个静态变量需要加入一个关键字——static,静态对象是属于类的,非静态对象是属于对象的 class Fenbi { public $changdu;//属于对象的 ...

随机推荐

  1. Beta阶段发布说明

    OverWatch来浪狼人杀助手Beta版本发布说明 Beta版本的新功能 添加了忘记密码与重置密码的功能 添加了语音流程提示的功能 添加了搜索好友的功能 添加了添加好友的功能 添加了能够直接通过点击 ...

  2. java -- 容易放错的误区

    1.按值传递 和 引用传递 (基本类型包括基本类型的包装类 或者 字符串类型 传递的是 副本 并不会改变原来的值)||  如果是引用类型 传递的是地址,会改变原来的值. public class T ...

  3. Java之使用Hadoop探索大数据的世界

    什么是大数据 PB = 1024tb 7123913827189tb Reids 无共享 HDFS 优点 :特别适合存储大型文件 TFS hdfs 架构 NameNode: 整个hadoop总管,只有 ...

  4. CSS--background

    它的组合写法: background-color, background-image, background-repeat,backgroundattachment, background-posit ...

  5. 简单的RPC原型与实现原理

    存在的问题 客户端硬编码服务端的地址 引入注册中心,方便服务的注册与发现 注册中心记录的信息:服务地址列表&服务节点权重 Zookeeper节点类型 临时节点:客户端.. 服务注销: tomc ...

  6. 笔记:程序内存管理 .bss .data .rodata .text stack heap

    1.未初始化的全局变量(.bss段) bss段用来存放 没有被初始化 和 已经被初始化为0 的全局变量.如下例代码: #include<stdio.h> int bss_array[102 ...

  7. Android常用组件之AutoCompleteTextView

    安卓组件中,凡是需要配置数据的组件,一般都是用Adapter配置. AutoCompleteTextView的使用方法与ListView类似,也是用setAdapter来设置数据. MultiAuto ...

  8. JAVA动态加载JAR

    // 生成JAR包D:\TestClass.jar package hand.java.loadjar; public class TestClass { private String sayHell ...

  9. 如何使用FileZilla上传和下载文件

    一.使用FileZilla上传文件 1 打开 FileZilla 按照如下图所示,填写远程 Linux 的 IP ,用户名,密码,还有端口号(默认22) 2 选中左边需要上传的文件,然后拖到右边,等待 ...

  10. MVC中渲染页面

    mvc中当返回的字符带有html代码的时候,可以直接使用@Html.Raw(Model.description)这句代码的意思就是返回不是html编码,因此用了这句代码就不需要单独再转换一次