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爬取读者并制作成PDF
Mar 10 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
Django框架使用内置方法实现登录功能详解
Jun 12 Python
Python3实现二叉树的最大深度
Sep 30 Python
python多进程并发demo实例解析
Dec 13 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
Python包和模块的分发详细介绍
Jun 19 Python
Python私有属性私有方法应用实例解析
Sep 15 Python
Python列表的深复制和浅复制示例详解
Feb 12 Python
使用tkinter实现三子棋游戏
Feb 25 Python
怎么用Python识别手势数字
Jun 07 Python
教你使用TensorFlow2识别验证码
Jun 11 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
获得Google PR值的PHP代码
2007/01/28 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
JavaScript 乱码问题
2009/08/06 Javascript
JSON 编辑器实现代码
2009/12/06 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
python MySQLdb使用教程详解
2018/03/20 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
2014年企业团支部工作总结
2014/12/10 职场文书
政工师工作总结2015
2015/05/26 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS