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 20 Python
利用python获取Ping结果示例代码
Jul 06 Python
python之DataFrame实现excel合并单元格
Feb 22 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
利用python实现对web服务器的目录探测的方法
Feb 26 Python
如何实现Django Rest framework版本控制
Jul 25 Python
在django中,关于session的通用设置方法
Aug 06 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
Python实现JS解密并爬取某音漫客网站
Oct 23 Python
pycharm 快速解决python代码冲突的问题
Jan 15 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/05/07 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
JS实现侧悬浮浮动实例代码
2013/11/29 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
解决uWSGI的编码问题详解
2017/03/24 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
python 获取计算机的网卡信息
2021/02/18 Python
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
大型车展策划方案
2014/02/01 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
原告离婚代理词
2015/05/23 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers