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进行基础的函数式编程的教程
Mar 31 Python
python中的闭包用法实例详解
May 05 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
Jun 30 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
Django 内置权限扩展案例详解
Mar 04 Python
对django views中 request, response的常用操作详解
Jul 17 Python
Python实现微信小程序支付功能
Jul 25 Python
python匿名函数用法实例分析
Aug 03 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
基于Python的Jenkins的二次开发操作
May 12 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中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
jquery插件之easing使用
2010/08/19 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
Javascript window对象详解
2014/11/12 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
python在非root权限下的安装方法
2018/01/23 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
python实现事件驱动
2018/11/21 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
机电专业体育教师求职信
2013/09/21 职场文书
人事部专员岗位职责
2014/03/04 职场文书
新学期标语
2014/06/30 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书