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简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
mac系统安装Python3初体验
Jan 02 Python
30秒轻松实现TensorFlow物体检测
Mar 14 Python
用Python shell简化开发
Aug 08 Python
python查询文件夹下excel的sheet名代码实例
Apr 02 Python
python 实现生成均匀分布的点
Dec 05 Python
Python中if有多个条件处理方法
Feb 26 Python
解决python虚拟环境切换无效的问题
Apr 30 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
Python多线程的退出控制实现
Aug 10 Python
详解python os.path.exists判断文件或文件夹是否存在
Nov 16 Python
python爬取抖音视频的实例分析
Jan 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版)
2006/10/09 PHP
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
荷兰本土平价百货:HEMA
2017/10/23 全球购物
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
大学毕业生个人自荐信范文
2014/01/08 职场文书
考试作弊检讨书
2015/01/27 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
2016国庆促销广告语
2016/01/28 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
MySQL为id选择合适的数据类型
2021/06/07 MySQL
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript