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基础教程之自定义函数介绍
Aug 29 Python
python根据日期返回星期几的方法
Jul 06 Python
解读! Python在人工智能中的作用
Nov 14 Python
python统计多维数组的行数和列数实例
Jun 23 Python
python爬取酷狗音乐排行榜
Feb 20 Python
numpy np.newaxis 的实用分享
Nov 30 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
python程序如何进行保存
Jul 03 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
解决Pymongo insert时会自动添加_id的问题
Dec 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
php更新mysql后获取改变行数的方法
2014/12/25 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
繁简字转换功能
2006/07/19 Javascript
JS 字符串连接[性能比较]
2009/05/10 Javascript
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python 文件数据读写的具体实现
2020/01/24 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
C++是不是类型安全的
2014/02/18 面试题
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
店长岗位的工作内容
2013/11/12 职场文书
物理教师自荐信范文
2013/12/28 职场文书
吨的认识教学反思
2014/04/27 职场文书
微信小程序和php的登录实现
2021/04/01 PHP