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爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 Python
跟老齐学Python之Python文档
Oct 10 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
Django查询数据库的性能优化示例代码
Sep 24 Python
Java及python正则表达式详解
Dec 27 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
详解如何设置Python环境变量?
May 13 Python
python中调试或排错的五种方法示例
Sep 12 Python
python编写计算器功能
Oct 25 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
Nov 28 Python
Django 权限管理(permissions)与用户组(group)详解
Nov 30 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
异步加载script的代码
2011/01/12 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
js日期时间补零的小例子
2013/03/05 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
python sort、sorted高级排序技巧
2014/11/21 Python
更改Python命令行交互提示符的方法
2015/01/14 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
python mysql断开重连的实现方法
2019/07/26 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
Python如何实现机器人聊天
2020/09/10 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
军训拉歌口号
2014/06/13 职场文书
创优争先心得体会
2014/09/11 职场文书
先进个人材料怎么写
2014/12/30 职场文书
第一书记观后感
2015/06/08 职场文书
关于五一放假的通知
2015/08/18 职场文书
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js