服务器端

使用ws

匿名 (未验证) 提交于 2019-12-03 00:26:01
要使用WebSocket,关键在于服务器端支持,这样,我们才有可能用支持WebSocket的浏览器使用WebSocket。 ws模块 在Node.js中,使用最广泛的WebSocket模块是 ws ,我们创建一个 hello-ws 的VS Code工程,然后在 package.json 中添加 ws 的依赖: "dependencies": { "ws": "1.1.1" } 整个工程结构如下: hello-ws/ | +- .vscode/ | | | +- launch.json <-- VSCode 配置文件 | +- app.js <-- 启动js文件 | +- package.json <-- 项目描述文件 | +- node_modules/ < -- npm 安装的所有依赖包 运行 npm install 后,我们就可以在 app.js 中编写WebSocket的服务器端代码。 创建一个WebSocket的服务器实例非常容易: // 导入WebSocket模块: const WebSocket = require ( 'ws' ); // 引用Server类: const WebSocketServer = WebSocket.Server; // 实例化: const wss = new WebSocketServer({ port: 3000 }); 这样

Wayland协议解析

匿名 (未验证) 提交于 2019-12-03 00:22:01
Wayland协议的理解就是对wayland的协议文件xml的理解。 Wayland是一种窗口管理协议.它的协议都定义在wayland.xml文件里面, 协议其实就是定义一组一组的接口.包含关系如下: Interface 接口 比如: wl_shm { } 其中 请求 ,是在服务器端需要实现的接口,在客户端调用。而 事件 是在服务器端调用,在客户端实现的接口。而 枚举 是当前接口提供的带有具体含义的常量值。这些定义,一般都有一项xml值来描述其功能含义。(比如: description/ summary) 因此, wayland协议文件xml里面就是由多个interface接口组成。 然后再详细分析: 请求和事件都是定义的函数接口,既然是函数,那么肯定就会涉及到参数,因此,在request/event的xml项内,包含子项arg,就是描述该请求的参数( 注意: 所有的 request/event 函数都有默认参数, request 的默认参数有两个,一个是指示调用该接口的客户端指针, 一个是指示接口信息的参数; event 的默认参数有一个,就是该 event 所在的 interface 的指针,和 this 指针作用类似。 默认参数是不会在 xml 协议文件中写出来, 阅读的时候需要自己注意 ),参数包括多项: 参数的名字, 参数的类型,参数的功能描述,

COAP协议全面分析

匿名 (未验证) 提交于 2019-12-03 00:19:01
转至:https://blog.csdn.net/robert_tina/article/details/78864345 COAP协议全面分析 HTTP与COAP 请求与响应示例 HTTP请求(文本格式) POST https://getman.cn/echo HTTP/1.1 User-Agent: Fiddler Host: getman.cn Content-Length: 9 {temp:22} 1 2 3 4 5 6 7 HTTP响应(文本格式) HTTP/1.1 200 OK Server: NWSs Date: Thu, 07 Dec 2017 14:38:25 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Cache-Control: private, no-cache Vary: Accept-Encoding X-Powered-By: PHP/7.1.7 Access-Control-Allow-Origin: * X-NWS-LOG-UUID: 6bac6a30-99fb-4441-8c04-fe0f6556e5b7 X-Daa-Tunnel: hop_count=2 Content-Length: 298 POST /echo HTTP/1.1 X-DAA-TUNNEL

COAP协议全面分析

匿名 (未验证) 提交于 2019-12-03 00:18:01
转至:https://blog.csdn.net/robert_tina/article/details/78864345 COAP协议全面分析 HTTP与COAP 请求与响应示例 HTTP请求(文本格式) POST https://getman.cn/echo HTTP/1.1 User-Agent: Fiddler Host: getman.cn Content-Length: 9 {temp:22} 1 2 3 4 5 6 7 HTTP响应(文本格式) HTTP/1.1 200 OK Server: NWSs Date: Thu, 07 Dec 2017 14:38:25 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Cache-Control: private, no-cache Vary: Accept-Encoding X-Powered-By: PHP/7.1.7 Access-Control-Allow-Origin: * X-NWS-LOG-UUID: 6bac6a30-99fb-4441-8c04-fe0f6556e5b7 X-Daa-Tunnel: hop_count=2 Content-Length: 298 POST /echo HTTP/1.1 X-DAA-TUNNEL

selenium基础-图形验证码

匿名 (未验证) 提交于 2019-12-03 00:16:01
selenium基础-图形验证码 一、图形验证码作用   设计的初衷其实就是为了防自动化,防止一些人利用自动工具恶意攻击网站 二、图形验证码是由客户端生成还是由服务器端生成的?   图形验证码是由服务器端生成的,再由前端进行渲染呈现给客户 三、遇到图形验证码的处理方式 使用万能验证码 屏蔽验证码 将服务器中生成的验证码以cookie的形式写入浏览器 后台增加接口,获取服务器端保存的验证码内容 图片识别,取到图片上的验证码中的内容 来源:博客园 作者: 那个谁呢 链接:https://www.cnblogs.com/jingdenghuakai/p/11783692.html

HTTP的幂等性

匿名 (未验证) 提交于 2019-12-03 00:11:01
转自: https://www.jianshu.com/p/234cf2e96832 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消费Web服务都非常简单。再加上浏览器、Javascript、AJAX、JSON以及HTML5等技术和工具的发展,互联网应用架构设计表现出了从传统的PHP、JSP、ASP.NET等服务器端动态网页向Web API + RIA(富互联网应用)过渡的趋势。Web API专注于提供业务服务,RIA专注于用户界面和交互设计,从此两个领域的分工更加明晰。在这种趋势下,Web API设计将成为服务器端程序员的必修课。然而,正如简单的Java语言并不意味着高质量的Java程序,简单的HTTP协议也不意味着高质量的Web API。要想设计出高质量的Web API,还需要深入理解分布式系统及HTTP协议的特性。 幂等性定义 本文所要探讨的正是HTTP协议涉及到的一种重要性质:幂等性(Idempotence)。在HTTP/1.1规范中幂等性的定义是:

浏览器上传几百上千个小文件有什么科学的办法么?

匿名 (未验证) 提交于 2019-12-03 00:02:01
4GB以上超大文件上传和断点续传服务器的实现 随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。 但是在很多情况下,平台运营方并没有大文件上传和断点续传的开发经验,往往在网上找一些简单的PHP或者Java程序来实现基本的上传功能,然而在实际使用中会发现,这些基于脚本语言实现的上传功能模块性能很弱,一是不支持2GB以上的内容上传;二是无法支持断点续传;三是效率极低,单台服务器最多支持几十个并发上传连接。 当前我们要搭建一个运营级的视频服务平台,在尝试了各种产品均无法满足要求,因此最后花精力自主用C++语言实现了这一高性能上传服务器。 项目地址: http://git://10.168.4.241/up6/web/asp.net.git Hyper Upload Server 超级上传服务器 这是一款超级文件上传服务器,采用异步I/O架构,采用C++语言编码实现。它支持4GB以上超大文件上传和断点续传,支持Windows和Linux服务器平台,支持任意格式的文件上传,尤其适合大的视频网站应用。单台服务器支持1000并发上传进程,支持PC端和智能手机端主流的浏览器。 主要特性 1. 服务器端采用异步I/O架设设计,具有高性能I/O处理能力,尤其适用于超大文件上传; 2.

面经计算机网络

匿名 (未验证) 提交于 2019-12-02 23:56:01
1.OSI七层模型 物理层 :利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。 数据链路层 :负责建立和管理节点间的链路。 网络层 :通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。 传输层 :向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。 会话层 :向两个实体的表示层提供建立和使用连接的方法。 表示层 :处理用户信息的表示问题,如编码、数据格式转换和加密解密等。 应用层 :直接向用户提供服务,完成用户希望在网络上完成的各种工作。 2.TCP/IP五层模型 物理层、数据链路层、网络层、传输层、应用层 3.应用层协议有哪些? HTTP、FTP、SMTP 4.TCP/UDP,IP,HTTP、SOCKET分别在哪一层? TCP/UDP在传输层,IP在网络层,HTTP在应用层、SOCKET在传输层 5.TCP和UDP特点区别?各自的应用场景 TCP是传输控制协议;UDP是用户数据报协议 TCP是面向连接的,通信双方彼此交换数据前,必须先通过三次握手协议建立连接之后才能传输数据,数据传输慢;UDP面向非连接也就是发送数据前不需要建立链接,数据传输快。 TCP提供可靠的服务;UDP无法保证可靠。 TCP面向字节流;UDP面向报文。 应用场景 :TCP适用于对效率要求低,但是对准确率要求高的场合(客户端应用);UDP适用于对效率要求高

阻塞connect与accept返回时机

匿名 (未验证) 提交于 2019-12-02 23:49:02
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190722132458582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JhS2lSYUtpUmE=,size_16,color_FFFFFF,t_70) 客户端在 调用connect之后,将开始发起SYN请求 ,请求与服务器建立连接,此时称为第一次握手。 服务器端在接受到SYN请求之后,把请求方放入SYN队列中,并给客户端回复一个确认帧ACK,此帧还会携带一个请求与客户端建立连接的请求标志,也就是SYN,这称为第二次握手 客户端收到SYN+ACK帧后,connect返回 。 发送确认建立连接帧ACK给服务器端。这称为第三次握手 服务器端收到ACK帧后,会把请求方从SYN队列中移出,放至ACCEPT队列中 ,而accept函数也等到了自己的资源,从阻塞中唤醒, 从ACCEPT队列中取出请求方,重新建立一个新的sockfd,并返回 。 文章来源: https://blog.csdn.net/RaKiRaKiRa/article/details/96849926

浅谈无状态和有状态服务的区别

匿名 (未验证) 提交于 2019-12-02 23:48:02
对服务器程序来说,究竟是有状态服务,还是无状态服务,其判断依旧――两个来自相同发起者的请求在服务器端是否具备上下文关系。 状态化请求,服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。 无状态请求,服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。 一、比较 有状态服务常常用于实现事务(并不是唯一办法,下文有另外的方案)。举一个常见的例子,在商城里购买一件商品。需要经过放入购物车、确认订单、付款等多个步骤。 由于HTTP协议本身是无状态的,所以为了实现有状态服务,就需要通过一些额外的方案。比如最常见的session,将用户挑选的商品(购物车),保存到session中,当付款的时候,再从购物车里取出商品信息 服务要设计为无状态的,这主要是从可伸缩性来考虑的。 如果server是无状态的,那么对于客户端来说,就可以将请求发送到任意一台server上,然后就可以通过负载均衡等手段,实现水平扩展。 如果server是有状态的,那么就无法很容易地实现了,因为客户端需要始终把请求发到同一台server才行,所谓“session迁移”等方案,也就是为了解决这个问题 三、session和cookie 基于session和cookie都可以实现事务,可以认为,session是有状态的