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中使用poplib模块收取邮件的教程
Apr 29 Python
python如何通过protobuf实现rpc
Mar 06 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
Python+OpenCV人脸检测原理及示例详解
Oct 19 Python
Python实现简单求解给定整数的质因数算法示例
Mar 25 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
Django REST framework内置路由用法
Jul 26 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
python 实现学生信息管理系统的示例
Nov 28 Python
Python列表元素删除和remove()方法详解
Jan 04 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获取新浪微博数据API实例
2013/11/12 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
python创建线程示例
2014/05/06 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
高校毕业生自我鉴定
2013/10/27 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
迟到检讨书5000字
2014/01/31 职场文书
简历上的自我评价
2014/02/03 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书