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监控网卡流量并使用graphite绘图的示例
Apr 27 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 Python
pip install python 快速安装模块的教程图解
Oct 08 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
Python是怎样处理json模块的
Jul 16 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 Python
jupyter notebook指定启动目录的方法
Mar 02 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制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
Python pymongo模块常用操作分析
2018/09/01 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
硕士生工作推荐信
2014/03/07 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
《故乡》教学反思
2014/04/10 职场文书
公司年会策划方案
2014/05/17 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
劳动仲裁调解书
2015/05/20 职场文书
运动会致辞稿
2015/07/29 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server