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中删除文件的程序代码
Mar 13 Python
跟老齐学Python之玩转字符串(1)
Sep 14 Python
介绍Python的@property装饰器的用法
Apr 28 Python
Python递归遍历列表及输出的实现方法
May 19 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
python Django 创建应用过程图示详解
Jul 29 Python
django框架用户权限中的session缓存到redis中的方法
Aug 06 Python
如何给Python代码进行加密
Jan 10 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 Python
教你怎么用Python监控愉客行车程
Apr 29 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 CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php发送post请求的三种方法
2014/02/11 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
js登录弹出层特效
2014/03/07 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
深入理解Django中内置的用户认证
2017/10/06 Python
python发送告警邮件脚本
2018/09/17 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
python实现猜数游戏
2020/03/27 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
python中如何写类
2020/06/29 Python
电子商务专业个人的自我评价
2013/12/19 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
电视新闻稿
2015/07/17 职场文书
校园安全主题班会
2015/08/12 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
MySQL分区表实现按月份归类
2021/11/01 MySQL
Vue.Draggable实现交换位置
2022/04/07 Vue.js