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切片及sys.argv[]用法详解
May 25 Python
django用户登录和注销的实现方法
Jul 16 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
Python 中Django验证码功能的实现代码
Jun 20 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
Python定时发送天气预报邮件代码实例
Sep 09 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
Python基于traceback模块获取异常信息
Jul 23 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
python实现图片批量压缩
Apr 24 Python
Python实现拼音转换
Jun 07 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
我的论坛源代码(八)
2006/10/09 PHP
php 无限分类的树类代码
2009/12/03 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
Yii学习总结之安装配置
2015/02/22 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
php的常量和变量实例详解
2017/06/27 PHP
基于jQuery选择器的整理集合
2013/04/26 Javascript
js选项卡的实现方法
2015/02/09 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
require.js中的define函数详解
2017/07/10 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
中软国际Java程序员机试题
2012/08/19 面试题
普通大学毕业生自荐信
2013/11/04 职场文书
副总经理工作职责
2013/11/28 职场文书
海洋科学专业求职信
2014/08/10 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
解除同居协议书
2015/01/29 职场文书
退货证明模板
2015/06/23 职场文书
房屋质量投诉书
2015/07/02 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS