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实现的守护进程(Daemon)用法实例
Jun 02 Python
在Django中创建第一个静态视图
Jul 15 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
python如何读写json数据
Mar 21 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
python3+PyQt5使用数据库窗口视图
Apr 24 Python
pytorch 数据集图片显示方法
Jul 26 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
python文件选择对话框的操作方法
Jun 27 Python
python如何获取列表中每个元素的下标位置
Jul 01 Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 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 checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
js setattribute批量设置css样式
2009/11/26 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
python去掉字符串中重复字符的方法
2014/02/27 Python
Python-基础-入门 简介
2014/08/09 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Python列表list操作相关知识小结
2020/01/29 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
Solaris操作系统的线程机制
2015/07/28 面试题
一封普通求职者的求职信
2013/11/20 职场文书
初中生物教学反思
2014/01/10 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
业务员岗位职责
2015/02/03 职场文书
金陵十三钗观后感
2015/06/04 职场文书
朋友离别感言
2015/08/04 职场文书