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 相关文章推荐
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
我用Python抓取了7000 多本电子书案例详解
Mar 25 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
Django model update的多种用法介绍
Mar 28 Python
python 实现方阵的对角线遍历示例
Nov 29 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
python 剪切移动文件的实现代码
2018/08/02 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
Django视图类型总结
2021/02/17 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
汽车专业毕业生自荐信
2013/11/03 职场文书
关于旅游的活动方案
2014/08/15 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
2015年人事科工作总结
2015/04/28 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
葬礼主持词
2015/07/02 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书