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判断变量是否已经定义的方法
Aug 18 Python
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
pandas factorize实现将字符串特征转化为数字特征
Dec 19 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
Python基于pandas爬取网页表格数据
May 11 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
大数据分析用java还是Python
Jul 06 Python
Python logging模块原理解析及应用
Aug 13 Python
matplotlib自定义鼠标光标坐标格式的实现
Jan 08 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
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
python中对list去重的多种方法
2014/09/18 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
python编写爬虫小程序
2015/05/14 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
分析Python中解析构建数据知识
2018/01/20 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
中间件分为哪几类
2016/09/18 面试题
PHP解决高并发问题
2021/04/01 PHP
mysql字符串截取函数小结
2021/04/05 MySQL
python如何进行基准测试
2021/04/26 Python
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python
Java实现简易的分词器功能
2021/06/15 Java/Android