Socket与Websocket_socket和websocket-程序员宅基地

技术标签: 网络  websocket  网络协议  

WebSocket是什么?

websocket是html5规范提出的一种协议;它基于TCP和HTTP协议是并存的两种协议。
html5 web socket规范定义了webSocket API ,支持页面使用webSocket协议与远程主机进行全双工的通信,它引入了websocket接口并且定义了一个全双工的通信通道,通过单一的套接字在web上进行操作。 html5 web sockets 以最小的开销高效的提供了web链接,相较于经常使用推送实时数据到客户端甚至通过维护两个http链接来模拟全双工链接的旧的轮询或长轮询。极大的减少了不必要的网络流量与延迟。

websocket提供了一个url来表示想要链接的远程断电。该规范定义了ws://以及wss:// 从http协议的初始握手阶段升级到webSocket协议来建立,但底层依旧是TCP/IP链接。

socket是什么

网络上的通讯都是通过socket进行通讯的。
主要内容如下

  1. 网络中进程是如何通信的

  2. socket是什么

  3. socket的基本操作
    3.1 socket()函数
    3.2 bind()函数
    3.3listen() connect()函数
    3.4 accept()函数
    3.5 read() write()函数
    3.6 close()函数
    4.socket中TCP的三次握手建立连接
    5.socket中tcp四次挥手

    1. 网络中进程是如何通信的

本地的进程间通信有很多种方式,总体分为四类:
1、消息传递(管道、FIFO、消息队列)
2、同步(互斥量,条件变量、读写锁、文件和写记录所、信号量)
3、共享内存
4、远程过程调用

本地通过进程pid来唯一标识一个进程,网络层的ip地址可以唯一标识网络中的主机,而传输层的协议+端口可以唯一标识主机中的进程(程序) (ip地址,协议,端口)就可以标识网络的进程了。

什么是socket?

socket其实是基于linux的一切皆文件,socket其实就是一种特殊的文件
,socket 函数就是对其进行的操作(读写IO,打开关闭)

socket基本操作

socket()函数 用于创建一个socket描述符,唯一标识一个socket,这个socket描述字根文件描述字一样,后续的操作都有用到它,把它作为参数,通过它来进行一些读写操作。

三个参数 domain协议域 (INET6 LOCAL) type 类型 (stream raw ) protocal 指定协议

服务其在启动的时候都会绑定一个中所周知的地址(ip+端口号),用于提供服务,客户就可以通过它来链接服务其;而客户端就不用指定,有系统自动分配一个端口好和自身ip结合。客户端则是在listen之前bind()客户端随机生成一个

websocket与socket关系

socket并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,位于应用层和传输层之间的一组接口。socket利用TCP ,TCP则利用了IP

WEBSOCKET与HTTP的关系
相同点:
1.都是基于TCP,可靠性传输协议
2.都是应用层协议
不同点:
1.websocket是双向通信协议,模拟socket协议,可以双向发送或接受信息,HTTP是单项的
2.websocket需要浏览器和服务器握手进行建立链接的,而http是浏览器发起向服务器的链接,服务器预先不知道这个链接

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45592483/article/details/122841415

智能推荐

最新全流程GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术深度应用-程序员宅基地

文章浏览阅读704次,点赞30次,收藏18次。最新全流程GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术深度应用_gms地下水数值模拟

Android 自定义横向进度条_android自定义横向进度条-程序员宅基地

文章浏览阅读2.4k次。private int max; private double progress; private int bgColor; private int progressColor; private int padding; private boolean openGradient; private int gradientFrom; private int gradientTo; private boolean showSecondProgres_android自定义横向进度条

宝塔打开后,内容渲染失败(405)【了解一下】_宝塔部署后405 not allowed-程序员宅基地

文章浏览阅读111次。如果你是以上这种情况,打开以后发现,数据渲染不上,很可能是因为你的配置反向代理的顺序搞错了,造成的结果就是反向代理没有替换成功!还是那些内容,只是改变了操作步骤;数据就能加载出来了!_宝塔部署后405 not allowed

联想计算机管理员权限设置,Windows XP系统如何新建administrator管理员权限账户-程序员宅基地

文章浏览阅读1.6k次。知识点分析:对于Windows XP系统,有很多种创建用户账户的操作方法。其中包括:使用CMD命令行的net命令进行,也可以使用控制面板的图形界面进行,还可以使用计算机管理控制台中的“本地用户和组”进行。其中后者自定义功能多,本文以此为例进行操作示范。操作步骤:1. 在系统桌面找到并使用鼠标右键点击“我的电脑”图标,然后在弹出菜单中选择“管理(G)”,如下图所示:2. 在弹出的计算机管理窗口,展开..._xp 开启管理员账户

socket 及 websocket的握手过程_websocket三次握手详解-程序员宅基地

文章浏览阅读6k次。一、WebSocket和HTTP之间的关系WebSocket和HTTP一样都是基于TCP的应用层协议。WebSocket协议和HTTP协议是两种不同的东西。客户端开始建立WebSocket连接时要发送一个header标记了 Upgrade的HTTP请求,表示请求协议升级。所以服务器端做出响应的简便方法是,直接在现有的HTTP服务器软件和现有的端口上实现WebSocket协议,然后再回一个状态..._websocket三次握手详解

小学计算机反思案例,小学数学有效教学案例及反思-程序员宅基地

文章浏览阅读210次。小学数学有效教学案例及反思《植树问题》教学设计及反思一、教学目标:1、知识与技能目标:通过动手实践,合作探究,让学生在做数学的过程中经历由现实问题到数学建模,理解并掌握植树棵数与间隔数之间的关系。2、过程与方法目标:通过学生自主实小学数学教学案例及反思小学数学教学案例及反思学生的认知结构,只有在经历学习活动的过程中主动才能完成。只有学生本人的积极思考、主动探索,才能有所发现、有所创新。但在不少学校..._小学数学教学案例博客

随便推点

acwing.188.逆序对数量_acwing 逆序对的数量-程序员宅基地

文章浏览阅读93次。逆序对数量(归并排序应用)给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000输入样例:62 3 4 5 6 1输出样例:5#include<iostream>using_acwing 逆序对的数量

Spark学习笔记_sparksession.read()-程序员宅基地

文章浏览阅读684次。一、安装1、上传并解压。2、修改spark/conf/spark_env.sh:export JAVA_HOME=/usr/jdk1.8.0_152/export SPARK_MASTER_IP=hadoop1 expart SPARK_MASTER_PORT=7077 export HADOOP_CONF_DIR=/usr/ha..._sparksession.read()

【Java 虚拟机原理】垃圾回收算法 ( 标记-清除算法 | 复制算法 | 标记-整理算法 )_java 垃圾回收算法 复制算法有标记过程吗-程序员宅基地

文章浏览阅读2.2k次,点赞9次,收藏38次。总结、一、标记清除算法、二、复制算法、三、标记-整理算法、_java 垃圾回收算法 复制算法有标记过程吗

虚幻引擎5 (UE5):完整的初学者学习教程_虚幻5教程-程序员宅基地

文章浏览阅读4.2w次,点赞22次,收藏164次。流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:6.26 GB |时长:7h 32m虚幻引擎5的最快入门方法云桥网络 平台获取教程你会学到什么虚幻引擎虚幻引擎5游戏设计建筑设计产品设计描述欢迎初学者全面了解新的虚幻引擎5。专业人士和初学者都可以使用UE5,借助新的Lumen Lighting System和Nanite虚拟几何引擎,创建令人惊艳的实时内容。作为一名游戏、架构.._虚幻5教程

c语言json库如何编译,C语言的JSON库Jansson-程序员宅基地

文章浏览阅读473次。Jansson概述Jansson是一个C语言库,用于编码,解码和处理JSON数据。其主要特点和设计原则是:简单直观的API和数据模型全面的文档不依赖其他库完全支持Unicode(UTF-8)广泛的测试套件Jansson的API稳定可靠,可广泛应用于生产中。它可以在多种平台上运行,包括多种类Unix系统和windows。它适用于任何系统,包括台式机,服务器和小型嵌入式系统。Jansson是以MIT协..._jansson库编译

学术与产业的碰撞:AI TIME 走进浙大专场活动-程序员宅基地

文章浏览阅读405次。点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!2021 年 7 月 13 日,「AI TIME 走进浙大」论坛在浙江大学公共管理学院隆重举行。此次活动得到了浙江大学计算机学院人..._kdd 杨洋 电力异常