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脚本对Linux服务器进行监控的教程
Apr 02 Python
python选择排序算法实例总结
Jul 01 Python
python中字符串类型json操作的注意事项
May 02 Python
python基础教程项目四之新闻聚合
Apr 02 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
python基础梳理(一)(推荐)
Apr 06 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
python使用minimax算法实现五子棋
Jul 29 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
利用python生成照片墙的示例代码
Apr 09 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
使用python实现名片管理系统
Jun 18 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
js版本A*寻路算法
2006/12/22 Javascript
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
详解Webpack loader 之 file-loader
2018/11/07 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
python实现矩阵乘法的方法
2015/06/28 Python
python 动态加载的实现方法
2017/12/22 Python
Python爬豆瓣电影实例
2018/02/23 Python
python matlibplot绘制3D图形
2018/07/02 Python
python操作excel的方法
2018/08/16 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
医学生自荐信
2013/12/03 职场文书
个人自我鉴定总结
2014/03/25 职场文书
协议书怎么写
2014/04/21 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
python3实现无权最短路径的方法
2021/05/12 Python