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中的正则表达式
Apr 28 Python
python使用post提交数据到远程url的方法
Apr 29 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
python 二分查找和快速排序实例详解
Oct 13 Python
python如何读写json数据
Mar 21 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
python自动生成sql语句的脚本
Feb 24 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
php4的session功能评述(一)
2006/10/09 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
2015/11/24 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
python验证码识别的示例代码
2017/09/21 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
Python bisect模块原理及常见实例
2020/06/17 Python
详解Python 中的容器 collections
2020/08/17 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
环保倡议书格式范文
2014/05/14 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
地球上的星星观后感
2015/06/02 职场文书
大学校园招聘会感想
2015/08/10 职场文书