python3实现UDP协议的服务器和客户端


Posted in Python onJune 14, 2017

利用Python中的socket模块中的来实现UDP协议,这里写一个简单的服务器和客户端。为了说明网络编程中UDP的应用,这里就不写图形化了,在两台电脑上分别打开UDP的客户端和服务端就可以了。

UDP:用户数据报协议,是一个面向无连接的协议。采用该协议不需要两个应用程序先建立连接。UDP协议不提供差错恢复,不能提供数据重传,因此该协议传输数据安全性差。 

客户端

python3只能收发二进制数据,需要显式转码

from socket import *

host = '192.168.48.128' # 这是客户端的电脑的ip
port = 13141 #接口选择大于10000的,避免冲突
bufsize = 1024 #定义缓冲大小

addr = (host,port) # 元祖形式
udpClient = socket(AF_INET,SOCK_DGRAM) #创建客户端

while True:
  data = input('>>> ')
  if not data:
    break
  data = data.encode(encoding="utf-8") 
  udpClient.sendto(data,addr) # 发送数据
  data,addr = udpClient.recvfrom(bufsize) #接收数据和返回地址
  print(data.decode(encoding="utf-8"),'from',addr)

udpClient.close()

服务器

同样需要显式转码

from socket import *
from time import ctime

host = '' #监听所有的ip
port = 13141 #接口必须一致
bufsize = 1024
addr = (host,port) 

udpServer = socket(AF_INET,SOCK_DGRAM)
udpServer.bind(addr) #开始监听

while True:
 print('Waiting for connection...')
 data,addr = udpServer.recvfrom(bufsize) #接收数据和返回地址
 #处理数据
 data = data.decode(encoding='utf-8').upper()
 data = "at %s :%s"%(ctime(),data)
 udpServer.sendto(data.encode(encoding='utf-8'),addr)
 #发送数据
 print('...recevied from and return to :',addr)

udpServer.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python判断字符串与大小写转换
Jun 08 Python
详解Python验证码识别
Jan 25 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
实践Vim配置python开发环境
Jul 02 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
python 生成任意形状的凸包图代码
Apr 16 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
如何使用python自带IDLE的几种方法
Oct 10 Python
Python中re模块的元字符使用小结
Apr 07 Python
老生常谈Python基础之字符编码
Jun 14 #Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 #Python
Python之re操作方法(详解)
Jun 14 #Python
Python之py2exe打包工具详解
Jun 14 #Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 #Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 #Python
Python实现的下载网页源码功能示例
Jun 13 #Python
You might like
php fckeditor 调用的函数
2009/06/21 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
详解python中的文件与目录操作
2017/07/11 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
关于python中的xpath解析定位
2020/03/06 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
django rest framework serializers序列化实例
2020/05/13 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
优质的学校老师推荐信
2013/10/28 职场文书
股东协议书
2014/04/14 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers