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中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
python微信公众号开发简单流程
Mar 23 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
python人民币小写转大写辅助工具
Jun 20 Python
Python读取指定日期邮件的实例
Feb 01 Python
Python地图绘制实操详解
Mar 04 Python
python实现维吉尼亚算法
Mar 20 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
python库matplotlib绘制坐标图
Oct 18 Python
Python基于yield遍历多个可迭代对象
Mar 12 Python
python 制作python包,封装成可用模块教程
Jul 13 Python
python 动态绘制爱心的示例
Sep 27 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
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
node.js require() 源码解读
2015/12/13 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
js中作用域的实例解析
2017/03/16 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
mac上node.js环境的安装测试
2017/07/03 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
新手简单了解vue
2019/05/29 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
详解Python中break语句的用法
2015/05/14 Python
python获取目录下所有文件的方法
2015/06/01 Python
python中的代码编码格式转换问题
2015/06/10 Python
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
Python实现基于POS算法的区块链
2018/08/07 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
python-numpy-指数分布实例详解
2019/12/07 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
婚纱摄影师求职信范文
2014/04/17 职场文书
数学教师个人总结
2015/02/06 职场文书
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript