一、基于UDP协议通信的套接字

udp是没有链接的,所以先启动哪一端都不会报错

importsocketserver=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)server.bind(('127.0.0.1',8082))whileTrue: data,client_addr=server.recvfrom(1024)print(data) server.sendto(data.upper(),client_addr)server.close()server

importsocketclient=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)whileTrue: msg=input('>>:').strip() client.sendto(msg.encode('utf-8'),('127.0.0.1',8082)) data,server_addr=client.recvfrom(1024)print(data)client

由于udp无连接,所以可以同时多个客户端去跟服务端通信(实现简单的并发,并不可靠)

importsocketclient=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)whileTrue: msg=input('>>:').strip() client.sendto(msg.encode('utf-8'),('127.0.0.1',8082)) data,server_addr=client.recvfrom(1024)print(data)client2

udp不会出现粘包现象,因为每个中就已经有了报头,这样对于接收端来说,容易区分处理。

udp的recvfrom是阻塞的,一个recvfrom(x)必须对唯一一个sendinto(y),收完了x个字节的数据就算完成,若是y>x数据就丢失,这意味着udp根本不会粘包,但是会丢数据,不可靠

二、socketserver模块

socketserver模块简化了编写网络服务程序的任务,是python标准库中很多服务器框架的基础。

socketserver中包含了两种类,一种为服务类(server class),一种为请求处理类(request handle class),前者主要做的是建立链接的过程,后者注重用户数据的处理

要实现一项服务,还必须派生一个handler class请求处理类,并重写父类的handle()方法。handle方法就是用来专门是处理请求的。该模块是通过服务类和请求处理类组合来处理请求的。SocketServer模块提供的请求处理类有BaseRequestHandler。

1.基于tcp协议通信

#服务端必须满足至少三点:#1. 绑定一个固定的ip和port#2. 一直对外提供服务,稳定运行#3. 能够支持并发importsocketserver#自定义类用来处理通信循环classMyTCPhanler(socketserver.BaseRequestHandler):defhandle(self):whileTrue:try: data= self.request.recv(1024)if len(data) == 0: break #针对linux系统 print('-->收到客户端的消息:', data) self.request.send(data.upper())exceptConnectionResetError:breakself.request.close()if __name__ == '__main__': server=socketserver.ThreadingTCPServer(('127.0.0.1',8081),MyTCPhanler) server.serve_forever()#链接循环server

from socket import *client=socket(AF_INET, SOCK_STREAM)client.connect(('127.0.0.1', 8081))#通信循环whileTrue:#msg=input('>>: ').strip() #msg='' #if len(msg) == 0:continue #client.send(msg.encode('utf-8')) #client.send(b'') client.send('hello'.encode('utf-8')) #client.send(b'') #print('has send') data=client.recv(1024)#print('has recv') print(data)client.close()client1

from socket import *client=socket(AF_INET, SOCK_STREAM)client.connect(('127.0.0.1', 8081))#通信循环whileTrue:#msg=input('>>: ').strip() #msg='' #if len(msg) == 0:continue #client.send(msg.encode('utf-8')) #client.send(b'') client.send('hello'.encode('utf-8')) #client.send(b'') #print('has send') data=client.recv(1024)#print('has recv') print(data)client.close()client2

2.基于udp协议通信

importsocketserverclassMyUdphandler(socketserver.BaseRequestHandler):defhandle(self): data,sock=self.request sock.sendto(data.upper(),self.client_address)if __name__ == '__main__': server=socketserver.ThreadingUDPServer(('127.0.0.1',8081),MyUdphandler) server.serve_forever()server

from socket import *client=socket(AF_INET,SOCK_DGRAM)whileTrue: client.sendto(b'hello',('127.0.0.1',8081)) data,server_addr=client.recvfrom(1024)print(data)client1

from socket import *client=socket(AF_INET,SOCK_DGRAM)whileTrue: client.sendto(b'hello',('127.0.0.1',8081)) data,server_addr=client.recvfrom(1024)print(data)client2

焚膏油以继晷,恒兀兀以穷年。

python通信模块库_python-基于UDP通信的套接字,socketserver模块的使用相关推荐

  1. 基于UDP协议的套接字+socketserver模块

    基于UDP协议的套接字 user datagram protocal 数据报协议 无双向通道.自带报头.类似发短信.不会粘包 不可靠:数据发送时,丢就丢了 UDP socket: 服务端: impor ...

  2. udp协议没有粘包问题、基于socketserver实现并发的socket(基于tcp、udp协议)、基于udp协议的套接字、操作系统原理以及进程知识

    基于udp协议的套接字通信服务端 from socket import *server=socket(AF_INET,SOCK_DGRAM) #数据报协议->udp server.bind((' ...

  3. python-基于UDP通信的套接字,socketserver模块的使用

    一.基于UDP协议通信的套接字 udp是没有链接的,所以先启动哪一端都不会报错 import socketserver=socket.socket(socket.AF_INET,socket.SOCK ...

  4. pythonsocket自定义协议_python-基于UDP通信的套接字,socketserver模块的使用-阿里云开发者社区...

    一.基于UDP协议通信的套接字 udp是没有链接的,所以先启动哪一端都不会报错 importsocket server=socket.socket(socket.AF_INET,socket.SOCK ...

  5. 20181225 基于TCP/IP和基于UDP/IP的套接字编程

    一.TCP/IP的套接字编程 服务器端代码: import socket​server = socket.socket() # 默认是基于TCP# 基于TCP的对象serve=socket.socke ...

  6. python加密库_python基于pyDes库实现des加密的方法

    本文实例讲述了python基于pyDes库实现des加密的方法.分享给大家供大家参考,具体如下: 下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要 ...

  7. python socket 域名_Python网络编程中的套接字名和DNS解析。

    距离上一次TCP的文章,这一次要讲的是套接字名和DNS,并且还会涉及到网络数据的发送接受和网络错误的发生和处理. 下面说套接字名,在创建和部署每个套接字对象时总共需要做5个主要的决定,主机名和IP地址 ...

  8. Qt使用UDp通信、套接字socket的成员函数bind()的作用

    一. 所谓bind,就是指绑定本地接受端口.          指定ip,是为了分辨多ip主机.在有服务端和客户端的UDP中,bind是服务端调用的函数,绑定的是服务端的IP,假设服务端有多个网卡,即 ...

  9. day26-2 基于TCP协议的套接字编程

    目录 基于TCP协议的套接字编程 套接字 套接字工作流程 基于TCP协议的套接字编程(简单) 服务端 客户端 基于TCP协议的套接字编程(循环) 服务端 客户端1 客户端2 基于TCP协议的套接字编程 ...

最新文章

  1. 通俗理解条件熵-数学
  2. Effective C++ -----条款06:若不想使用编译器自动生成的函数,就该明确拒绝
  3. UA OPTI512R 傅立叶光学导论24 相干传递函数
  4. 怎么样条件需要做屏蔽机房,屏蔽机房建设标准是什么?
  5. 前端路由跳转丢失端口号_如何在应用架构中设计微前端方案 icestark
  6. 斜视术后融合训练方法_做斜视手术两年后又复发了怎么办?
  7. [BZOJ1602BZOJ1787BZOJ2144]树上LCA的算法巩固练习
  8. 易筋SpringBoot 2.1 | 第五篇:RestTemplate请求https(3)
  9. 离线版MSDN下载地址
  10. 矩阵的对数运算公式_对数(运算层面)
  11. 手机短信小额支付接口.Net实现
  12. centos7 查看本地ip地址
  13. html5制作颜色的诗句,带有颜色的诗句(精选60句)
  14. 安装TypeScript
  15. 脑机接口的过去、现在与未来
  16. [多媒体] 音频的左右声道
  17. 计算机计算资产分析表,财务指标计算公式excel,用EXCEL做财务指标分析,如何使用其他工作簿做公式计算??...
  18. 几何结构因子(Geometrical structure factor)和原子形状因子(atomic form factor)
  19. 【统计学】【2015.09】基于状态空间模型的时间序列预测与插值
  20. MySQL语句性能优化

热门文章

  1. 手机编写python挖矿_用 Python 从零开发一个区块链应用
  2. 通过Liberty存储库下载保存组件,再分发并离线安装之操作步骤
  3. CSS3利用text-shadow属性实现多种效果文字特效
  4. 聆听音乐6cd下载_机器聆听如何改变智能家居体验
  5. 简单分享七夕情人节的微信小游戏制作步骤
  6. 福禄克测试中的电阻参数:LOOP、PAIR UBL、P2P UBL代表什么?
  7. django 访问不到页面时显示404页面
  8. css PC端弹窗时禁止底部页面滚动
  9. 苹果原壁纸高清_动漫头像 | 二次元高清头像
  10. 本地的html源文件,本地书源导入教程