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日期操作学习笔记
Oct 07 Python
Python通过websocket与js客户端通信示例分析
Jun 25 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
利用Python计算KS的实例详解
Mar 03 Python
python 字符串格式化的示例
Sep 21 Python
python FTP编程基础入门
Feb 27 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 Python
Python requests用法和django后台处理详解
Mar 19 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 MSSQL 存储过程的方法
2008/12/24 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
JS命名空间的另一种实现
2013/08/09 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
javascript表单事件处理方法详解
2016/05/15 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
政法学院毕业生求职信
2014/02/28 职场文书
暂停营业通知
2015/04/25 职场文书
教师旷工检讨书
2015/08/15 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
php去除deprecated的实例方法
2021/11/17 PHP
使用Java去实现超市会员管理系统
2022/03/18 Java/Android