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计算三维矢量幅度的方法
Jun 15 Python
使用Python对IP进行转换的一些操作技巧小结
Nov 09 Python
Python表示矩阵的方法分析
May 26 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
keras分类之二分类实例(Cat and dog)
Jul 09 Python
Python字符串及文本模式方法详解
Sep 10 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 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网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
php fread函数使用方法总结
2019/05/28 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
小程序实现投票进度条
2019/11/20 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
Python程序设计入门(5)类的使用简介
2014/06/16 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
聊聊python中的异常嵌套
2020/09/01 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
法律六进活动方案
2014/03/13 职场文书
文明村创建实施方案
2014/03/27 职场文书
同居协议书范本
2014/04/23 职场文书
个人工作表现自我评价
2015/03/06 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
导游词之无锡古运河
2019/11/14 职场文书
Python 多线程处理任务实例
2021/11/07 Python