python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)


Posted in Python onApril 25, 2014

UDP广泛应用于需要相互传输数据的网络应用中,如QQ使用的就是UDP协议。在网络质量不好的情况下,使用UDP协议时丢包现象十分严重,但UDP占用资源少,处理速度快,UDP依然是传输数据时常用的协议。

下面是用python实现UDP服务器的代码:

#!/usr/bin/env python
import socket
address=('127.0.0.1',10000)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(address)
while 1:
 data,addr=s.recvfrom(2048)
 if not data:
  break
 print "got data from",addr
 print data
s.close()

UDP客户端的代码:

#!/usr/bin/env python
import socket
addr=('127.0.0.1',10000)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while 1:
 data=raw_input()
 if not data:
  break
 s.sendto(data,addr)
s.close()

运行这两个程序,会显示以下结果:

服务器端:

python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)

客户端:

python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
UDP的应用

在局域网中,如果要想局域网内所有计算机发送数据,可以使用广播,广播不能用TCP实现,可以用UDP实现,接受方收到广播数据后,如果有进程在侦听这个端口,就会接收数据,如果没有进程侦听,数据包会被丢弃。

广播的发送方:

#!usr/bin/env python
import socket
host=''
port=10000
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
s.bind((host,port))
while 1:
 try:
  data,addr=s.recvfrom(1024)
  print "got data from",addr
  s.sendto("broadcasting",addr)
  print data
 except KeyboardInterrupt:
  raise

广播的接收方:

#!/usr/bin/env python
import socket,sys
addr=('<broadcast>',10000)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
s.sendto("hello from client",addr)
while 1:
 data=s.recvfrom(1024)
 if not data:
  break
 print data

运行广播程序,发送端会显示以下结果:

got data from (‘<地址>',<端口号>)
hello fromclient

接收端会显示以下结果:

(‘broading',(<IP地址>,10000))
Python 相关文章推荐
python的dataframe转换为多维矩阵的方法
Apr 11 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
python中列表的切片与修改知识点总结
Jul 23 Python
PyQt Qt Designer工具的布局管理详解
Aug 07 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
pandas apply多线程实现代码
Aug 17 Python
django使用多个数据库的方法实例
Mar 04 Python
python中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 #Python
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 #Python
Python time模块详解(常用函数实例讲解,非常好)
Apr 24 #Python
Python 时间操作例子和时间格式化参数小结
Apr 24 #Python
python抓取网页图片并放到指定文件夹
Apr 24 #Python
python字符串替换示例
Apr 24 #Python
python自动安装pip
Apr 24 #Python
You might like
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
javascript中的几个运算符
2007/06/29 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
解决python flask中config配置管理的问题
2019/07/26 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
Python作用域与名字空间原理详解
2020/03/21 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
采购求职信
2014/03/17 职场文书
联谊会主持词
2014/03/26 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
导游词怎么写
2015/02/04 职场文书
教师党员个人自我评价
2015/03/04 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python