python网络编程之数据传输UDP实例分析


Posted in Python onMay 20, 2015

本文实例讲述了python网络编程之数据传输UDP实现方法。分享给大家供大家参考。具体分析如下:

一、问题:

你觉得网络上像msn,qq之类的工具在多台机器之间互相传输数据神秘吗?你也想玩一下在两台机器之间传数据吗?今天让python告诉我们基本原理吧,当然只是做简单的了解,实际情况复杂的多。
     我们今天用python实现一个简单的udp程序。

二、程序实现:

1) 使用模块

(socket)套接字模块: 套接字模块是一个非常简单的基于对象的接口,它提供对低层BSD套接字样式网络的访问 。使用该模块可以实现客户机和服务器套接字。

所谓的套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。 它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要 。

2) 建立服务器

第1步:创建socket对象

s = socket.socket(family,type)

family 的值可以是AF_UNIX(unix域,用于同一台机器上的进程间通讯),也可以是AF_INET(对应于ip协议的TCP或UDP)

Type参数的值可以是: SOCK_STREAM(流套接字)或者 SOCK_DGRAM(数据报文套接字),SOCK_RAW(raw套接字)。

我们这里使用udp数据报文套接字;

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

第2步:将socket绑定到指定地址上:s.bind(address),address 必须是一个双元素组,(host,port)

我们这里绑定本机8081端口: s.bind(("", port))

第3步:调用recvfrom方法接收客户端发来的数据,recvfrom方法需指定可接收的最大数据量。将返回数据内容和客户端地址;

import socket 
port = 8081 
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.bind(("", port)) 
print "waiting on port:", port 
while True: 
  data, addr = s.recvfrom(1024)
  print "Received:", data, "from", addr

3) 客户端建立

建立客户端很简单,只用创建套接字对象,指定端口,调用sendto方法传输数据就ok了,如下;

import socket 
port = 8081 
host = "localhost" 
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.sendto("Hello! It's working.", (host, port))

使用数据报方式发送简短的文本信息是非常简单的,如果你想要可靠的传输数据,这种方法是不可行,如果服务器不可用,信息就会丢失,下一节将学习如何使用tcp协议来传输信息。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
使用python实现rsa算法代码
Feb 17 Python
详解Python3中的迭代器和生成器及其区别
Oct 09 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
Python计算公交发车时间的完整代码
Feb 12 Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 Python
python的列表List求均值和中位数实例
Mar 03 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
python通过函数名调用函数的几种场景
Sep 23 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 Python
利用python进行数据加载
Jun 20 Python
python如何利用cv2.rectangle()绘制矩形框
Dec 24 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 #Python
python计算时间差的方法
May 20 #Python
python中sys.argv参数用法实例分析
May 20 #Python
python文件操作之目录遍历实例分析
May 20 #Python
Python中使用strip()方法删除字符串中空格的教程
May 20 #Python
python字典排序实例详解
May 20 #Python
在Python中操作字符串之startswith()方法的使用
May 20 #Python
You might like
在PWS上安装PHP4.0正式版
2006/10/09 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
2017/02/04 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
javascript完美拖拽的实现方法
2013/09/29 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
致1500米运动员广播稿
2014/02/07 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
户籍证明格式
2014/09/15 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
三孔导游词
2015/02/05 职场文书
电工实训心得体会
2016/01/14 职场文书