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实现方便使用的级联进度信息实例
May 05 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
Python定时器实例代码
Nov 01 Python
python实现excel读写数据
Mar 02 Python
Python初学者常见错误详解
Jul 02 Python
python自动生成model文件过程详解
Nov 02 Python
python 通过手机号识别出对应的微信性别(实例代码)
Dec 22 Python
如何在Python 游戏中模拟引力
Mar 27 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
python实现图片九宫格分割的示例
Apr 25 Python
python如何做代码性能分析
Apr 26 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 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生成图形(Libchart)实例
2013/11/06 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
JS location几个方法小姐
2008/07/09 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python基于回溯法解决01背包问题实例
2017/12/06 Python
python实现图像识别功能
2018/01/29 Python
python学生管理系统代码实现
2020/04/05 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
详解Django admin高级用法
2019/11/06 Python
python Shapely使用指南详解
2020/02/18 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
关于学习的演讲稿
2014/05/10 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
红色电影观后感
2015/06/18 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书