socketserver

网络编程

二次信任 提交于 2020-10-29 07:12:43
一、软件开发的架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:QQ、微信、网盘、优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~ 软件开发的架构分为C/S架构和B/S架构。 1.C/S架构 C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构是从用户层面(也可以是物理层面)来划分的。 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 2.B/S架构 B/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的。 Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查。所以B/S架构是一种轻量级的架构,升级维护方便。 小结:在网络编程中的C/S架构在计算机编程中占据着垄断地位。在C/S架构的基础上有了B/S架构,所以B/S架构是C/S架构的一种特殊形式。 二、网络基础 网络是什么?计算机之间是怎么通信的? 在计算机最早期

Kafka网络模型

跟風遠走 提交于 2020-10-28 12:59:21
Kafka网络模型 摘要:很多人喜欢把RocketMQ与 Kafka 做对比,其实这两款消息队列的网络通信层还是比较相似的,本文就为大家简要地介绍下Kafka的NIO网络通信模型,通过对Kafka源码的分析来简述其Reactor的多线程网络通信模型和总体框架结构,同时简要介绍Kafka网络通信层的设计与具体实现。 一、Kafka网络通信模型的整体框架概述 Kafka的网络通信模型是基于NIO的Reactor多线程模型来设计的。这里先引用Kafka源码中注释的一段话: 相信大家看了上面的这段引文注释后,大致可以了解到Kafka的网络通信层模型,主要采用了 1(1个Acceptor线程)+N(N个Processor线程)+M(M个业务处理线程) 。下面的表格简要的列举了下(这里先简单的看下后面还会详细说明): 线程数线程名线程具体说明1kafka-socket-acceptor_%xAcceptor线程,负责监听Client端发起的请求Nkafka-network-thread_%dProcessor线程,负责对Socket进行读写Mkafka-request-handler-_%dWorker线程,处理具体的业务逻辑并生成Response返回 Kafka网络通信层的完整框架图如下图所示: Kafka消息队列的通信层模型—1+N+M模型.png

查看Mysql版本号

百般思念 提交于 2020-10-06 09:37:15
一、使用命令行模式进入mysql会看到最开始的提示符; 二、命令行中使用status可以看到; 三、使用系统函数等等, 查看版本信息 #1使用命令行模式进入mysql会看到最开始的提示符 mysql –uroot –p123456 Your MySQL connection id is 3 Server version: 5.1.69 Source distribution #2命令行中使用status可以看到 代码如下: mysql> status; mysql Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1 Connection id:3 Current database: Current user: root@localhost SSL: Not in use Current pager:stdout Using outfile:'' Using delimiter:; Server version:5.1.69 Source distribution Protocol version:10 Connection: Localhost via UNIX socket Server characterset:utf8 Db characterset:utf8 Client

Robotframework运行原理解析

馋奶兔 提交于 2020-09-26 13:43:40
用到的知识: SocketServer模块的socket编程 threading模块的多线程编程 robotframework执行时可以添加监听器监听脚本的运行 具体流程 1.在Ride加载控制执行的插件的时候,会开启一个守护线程,这个线程开启了一个监听器服务,这个监听器后期会用来获得robotframework发送过来的结果 2.在Ride点击run的时候,做了下面几件事: 生成robotframework要执行的脚本命令,在这个命令中附加了一个监听器,监听robotframework的运行,此时监听器已经获得了前面ride启动的监听器的端口号,以及是否在用例失败的时候不再执行的参数。由于在同一个机器上面,地址统一是localhost 执行脚本开始运行,这时附加在这个脚本上listerner,它也开启了一个服务,这个服务用来接收指令用的,是一个Debugger服务,可以通过给这个服务接收指令,让脚本暂停,或者一步步的执行。另外值得一提的就是由于是ride开启脚本运行的,因此ride自然知道了Debugger服务的端口号了,以及它的pid,这样才能给它发信,并且终止它的运行 3.脚本执行的listener,会把所有的运行信息已json格式的方式,发送给ride的监听服务,ride接收到脚本运行的信息后,将其添加到运行面板上,这就是为啥可以同步看到脚本运行的信息的原因了 4

C# .NET Socket 简单实用框架

大憨熊 提交于 2020-08-18 08:31:50
背景: 首先向各位前辈,大哥哥小姐姐问一声好~ 这是我第一次写博客,目前为一个即将步入大四的学生,上学期在一家公司实习了半年,后期发现没有动力,而且由于薪水问题(废话嘛),于是跳槽到这家新的公司。 说到Socket,想必大家都或多或少有所涉及,从最初的计算机网络课程,讲述了tcp协议,而Socket就是对协议的进一步封装,使我们开发人员能够更加容易轻松的进行软件之间的通信。 这个星期刚好接受一个共享车位锁的项目,需要使用Socket与硬件进行通信控制,说白了也就是给锁发送指令,控制其打开或者关闭,再就是对App开放操作接口,使其方便测试以及用户的使用。这其中核心就是Socket的使用,再开发出这个功能之后,我发现使用起来很不方便,于是耗时2天抽象其核心功能并封装成框架,最后使用这个框架将原来的项目重构并上线,极大的提高了软件的可拓展性,健壮性,容错率。 个人坚信的原则: 万物皆对象 好了,不废话了,下面进入正文 正文: 1、首先简单讲下C#中Socket的简单使用。 第一步:服务端监听某个端口 第二步:客户端向服务端地址和端口发起Socket连接请求 第三步:服务端收到连接请求后创建Socket连接,并维护这个连接队列。 第四步:客户端和服务端已经建立双工通信(即双向通信),客户端和服务端可以轻松方便的给彼此发送信息。 至于简单使用的具体实现代码全部被我封装到项目中了

C#服务器全面讲解与制作

我与影子孤独终老i 提交于 2020-08-12 11:10:10
C#服务器全面讲解与制作一             环境配置与基础架构 环境配置 基础的服务器架构 这里我会讲解高级的C#服务器的全面制作流程 会对大家有很大的帮助 不过在这个教程中主要是讲解服务器的制作,所以不会讲解客户端的制作,不过会提供相关客户端的代码。 1 环境配置 1.1 VS code环境配置   如果你觉得用Visual Studio来写代码是一件很酷的事情,那么可以直接略过这个部分,到下一个安装Visual Studio 2019的部分   我们在开发之前需要先配置开发环境,由于这里使用的是.Net core来进行开发,所以先在 官网 下载.Net core的SDK,我这里用的是.Net core2.2的开发环境       下载完成后双击安装就行啦,我觉得这个就不用教了吧。。。    那么就进入下一步,到 这里 下载VS code,什么!VS code是哪个???看下图即可      同理下载后安装即可   接着就是对C#的支持了,虽然VS code可以支持很多种语言,但不代表下载之后就有这么高超的能力,我们还需要配置一波      是不是就配置好了呢,对的呢,下来就是很厉害的一部分了,在VS code中对终端的操作需要熟悉一些才行,下来会讲解以下如何新建一个.Net core的项目,会用到很多命令哦   不过不用太过担心,毕竟只是一些很简单的命令   首先

八年阿里测试大佬,对非UI自动化测试和UI自动化测试理解与分析!!! 机密文件!!!随时会删!!!

点点圈 提交于 2020-08-12 04:12:22
先抄一段话,来说什么是自动化测试:Test automation In software testing, test automation is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes. (在软件测试中,测试自动化是使用特殊的软件(与被测试的软件分离)来控制测试的执行以及实际结果与预测结果的比较。) 本篇文章也不打算总结有多少种测试,他们怎么分类,我们只讲自动化测试…… 上边一段话也讲了什么是自动化测试,简单来讲就是一个操作软件的软件,然后可以对操作的结果进行验证。这里的定义是跟被测软件分离,这个我不是很同意这句话,有些自动化测试是进程内的,需要inject代码来运行测试代码,甚至有些直接类似病毒附加二进制代码并且运行在被测程序的进程内(确实见过一个软件是这么做的,直接改二进制代码然后在进程内运行一个socket server来执行测试)。 既然是一种软件,那我们就简单按照有没有UI,分为非UI和UI的自动化测试程序: 常见的非UI自动化 大部分的Unit Test API test

jmeter与tcp和udp建立连接

橙三吉。 提交于 2020-08-12 03:00:21
1.jmeter 与tcp 建立连接 先启动一个tcp服务端 # -*- coding:utf-8 -*- #@Time : 2020/5/17 20:18 #@Author: 张君 #@File : server_test.py # encoding=utf-8 import socketserver import threading class MyTCPHandler(socketserver.BaseRequestHandler): def handle(self): while True: self.data = self.request.recv(1024).strip() cur_thread = threading.current_thread() print(cur_thread) if not self.data: print(u"客户端:%s 退出!" % self.client_address[0]) break print(u"%s 内容:%s" % (self.client_address[0], self.data.decode("utf-8"))) ## self.request.sendall(self.data.upper()+'\n'.encode("utf-8")) self.request.sendall(self.data.upper()

Springboot Websocket入门

时光怂恿深爱的人放手 提交于 2020-08-10 16:03:31
WebsocketConfig package com.suyu.websocket.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter; /** * 开启websocket的支持 */ @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter(){ return new ServerEndpointExporter(); } } SocketServer package com.suyu.websocket.server; import com.suyu.websocket.entity.Client; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype