首页 > 编程语言 >网络编程小结

网络编程小结

时间:2023-10-24 21:14:50浏览次数:25  
标签:socketserver 编程 网络 粘包 并发 服务器 server 小结 客户端

目录

网络编程小回顾

1.加入通信循环,使客户端和服务端的可以相互发数据

2.加入连接循环,可以接收多个客户端的连接请求

3.执行ssh命令的小案例subprocess

subprocess这个模块是可以执行系统命令

4.粘包问题:就是发送的数据有的合并在了一起,具体情况是tcp这个协议的问题,tcp是流式协议,这个协议会有概率把时间间隔较短以及数据量较小的数据,一次性发送来节省资源

5.解决粘包问题:视频里面的方法太水了,对于粘包问题最常见且相对简便的方法是定长消息或消息边界标记

定长消息:就是给每条消息的长度固定一个特定的字节数,就是给消息长度加点限制

消息边界标记:简白点就是使用换行符\n或回车符等

6.基于socket的udp

​ 发送:sendto

​ 接收:recvfrom

7.udp协议的特点

​ 可以发空(数据报协议,自带报头)

​ 不需要建立连接(这也是会出现丢包的原因)

​ 不会粘包

​ 不可靠(客户端,服务端谁断开都不受影响)

8.socketserver的使用(并发)

​ 这个方法最大的特殊点就是可以实现并发,什么是并发就是可以接受很多个客户端来发送数据

​ TCP的服务器

​ server = socketserver.ThreadingTCPServer(它就是TCP服务器本身)

​ server.server_forever()开启服务器并监听

​ 写一个类,类里面重写handle,方法内能实现收发数据(并发起来)

​ UDP的服务器

​ server = socketserver.ThreadingUDPServer(它就是TCP服务器本身)

​ server.server_forever()开启服务器并监听(这步不能少去)

​ 写一个类,类里面重写handle,方法内能实现收发数据(并发起来)

同时这两个服务器里面的self.request是不一样的

还有要想获得正确的客户端地址要用到self.client_address因为正确的IP地址和端口号被包装到了这里面

9.socketserver源码分析

​ ThreadingTCPServer里面的init替我们创建了socket、bind、listen这些方法

​ server.serve_forever():创建线程,建立连接,和处理通信的问题

标签:socketserver,编程,网络,粘包,并发,服务器,server,小结,客户端
From: https://www.cnblogs.com/slzjb/p/17785747.html

相关文章

  • C#网络下载器
    之前学习了一部分的C#基础,但是感觉会的不多,很多地方依然需要通过做一点小Demo来进行巩固,那么这个C#的网络下载器,就来了原理讲解首先我们编写代码之前,我们需要了解下网络下载的原理到底是什么?学习过C#中IO流部分的知识,或者你有其它的语言的基础,学习过其它语言的文件IO的基础,肯定......
  • WebGL编程指南pdf电子版
    WebGL编程指南pdf电子版作者:【美】KouichiMatsuda,RodgerLea(松田浩一,罗杰•李)出版年:2014-6ISBN:9787121229428连接提取码:m9lw对WebGL基础介绍详细,翻译的很好。着色器,点线三角形绘制,变换矩阵,MVP矩阵,光照和层次模型。入门WebGL很好的参考,读完可以轻松实现一个机器人行......
  • 计算机网络——物理层
    物理层目录物理层物理层的基本概念传输媒体物理层协议的主要任务物理层下面的传输媒体(了解即可)无线电频谱管理机构传输方式串行传输和并行传输同步传输和异步传输单向(单工)通信、双向交替通信(半双工)和双向同时通信(全双工)编码与调制常用编码:不归零编码归零编码曼彻斯特编码差分曼彻......
  • 浅谈排序网络与并行排序算法
    对于普通的基于比较排序我们拥有一个复杂度下界\(O(n\logn)\),然而如果我们允许并行计算的话,将得到一些复杂度更优秀的计算方法。听到并行这个词许多人就会认为你有几个线程复杂度就除以几,所以线程堆得越多越好。但许多的算法问题都必须要满足你必须要算完A才能去计算B,比如对......
  • 2014腾讯校园招聘实习技术类笔试题目/STL小结
    STL就是StandardTemplateLibrary,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作......
  • 一站式学习C编程 Linux C编程一站式学习 pdf电子版
    一站式学习C编程LinuxC编程一站式学习pdf电子版作者:宋劲杉出版年:2011-3ISBN:9787121129827连接提取码:gcqb......
  • python 网络编程
    python编程目录python编程一.网络编程socket1.1基于tcp实现网络通讯1.2基于tcp实现远程执行命令1)粘包问题2)自定义协议解决粘包问题3)最终版定义字典解决粘包问题1.3socketserver实现并发1)基于TCP实现2)基于UDP实现一.网络编程socket1.1基于tcp实现网络通讯服务......
  • 利用CloudFlare Workers实现自由网络
    1、打开官网https://www.cloudflare.com/zh-cn/注册登录2、左侧菜单点"Workers和Pages"——创建Workers3、部署"HelloWorld"脚本,部署后点击编辑4、替换代码,https://github.com/3Kmfi6HP/EDtunnel/blob/main/_worker.js5、替换代码中userID为你的uuid,可以使用客户端随机生成......
  • 网络系列-1 TCP/IP 网络模型有哪几层
    问大家,为什么要有TCP/IP网络模型?对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议。这个网络协议是分层的,每一层都有各自......
  • 图神经网络—GNN
    看了大佬的博客AGentleIntroductiontoGraphNeuralNetworks图图用来表示一些实体间的关系——》点VVertex顶点/nodeEEdge边/关系UGlobal全局(embedding)比如一个图中是否含有环就是一个全局信息VEU可以用向量来表示图分为有方向与无方向两种实体间的关......