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基础教程之获取本机ip数据包示例
Feb 10 Python
python实现的简单窗口倒计时界面实例
May 05 Python
python实现数据图表
Jul 29 Python
Python工程师面试必备25条知识点
Jan 17 Python
django的ORM模型的实现原理
Mar 04 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
如何在向量化NumPy数组上进行移动窗口
May 18 Python
Pycharm 如何设置HTML文件自动补全代码或标签
May 21 Python
python获取字符串中的email
Mar 31 Python
Python Matplotlib绘制动画的代码详解
May 30 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 显示客户端IP与服务器IP的代码
2010/10/12 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
2020/02/11 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
python提取log文件内容并画出图表
2019/07/08 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
国际象棋商店:The Chess Store
2018/07/09 全球购物
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
后勤工作职责
2013/12/22 职场文书
高级编程求职信模板
2014/02/16 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
离婚纠纷代理词
2015/05/23 职场文书
金榜题名主持词
2015/07/02 职场文书
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android