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做智能家居温湿度报警系统
Sep 25 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
Python requests模块实例用法
Feb 11 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
python用requests实现http请求代码实例
Oct 31 Python
python 实现矩阵按对角线打印
Nov 29 Python
Python SSL证书验证问题解决方案
Jan 13 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
python开发前景如何
Jun 11 Python
python如何正确使用yield
May 21 Python
Python四款GUI图形界面库介绍
Jun 05 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
javascript,php获取函数参数对象的代码
2011/02/03 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
Pycharm修改python路径过程图解
2020/05/22 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
PHP经典面试题
2016/09/03 面试题
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
九年级英语教学反思
2014/01/31 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
邹越演讲观后感
2015/06/15 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏