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的Flask框架与数据库连接的教程
Apr 20 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
Python 文件管理实例详解
Nov 10 Python
Python内置函数OCT详解
Nov 09 Python
基于Python pip用国内镜像下载的方法
Jun 12 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
python之super的使用小结
Aug 13 Python
Django REST framework 分页的实现代码
Jun 19 Python
django-allauth入门学习和使用详解
Jul 03 Python
使用python计算三角形的斜边例子
Apr 15 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
Python实现http接口自动化测试的示例代码
Oct 09 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
长波知识介绍
2021/03/01 无线电
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
PHP 编程的 5个良好习惯
2009/02/20 PHP
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
php 冒泡排序 交换排序法
2011/05/10 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
python链接Oracle数据库的方法
2015/06/28 Python
python实现Adapter模式实例代码
2018/02/09 Python
Python实现简单求解给定整数的质因数算法示例
2018/03/25 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Pytorch之finetune使用详解
2020/01/18 Python
Python函数参数分类原理详解
2020/05/28 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
网上签名寄语活动留言
2014/01/18 职场文书
初中英语教学反思
2014/01/25 职场文书
转预备党员政审材料
2014/02/06 职场文书
历史学专业求职信
2014/06/19 职场文书
2015年幼师工作总结
2015/04/28 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android