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 相关文章推荐
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
Python获取SQLite查询结果表列名的方法
Jun 21 Python
Python3生成手写体数字方法
Jan 30 Python
Python简单I/O操作示例
Mar 18 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
通过代码简单了解django model序列化作用
Nov 12 Python
Python从文件中读取数据的方法步骤
Nov 18 Python
Python爬虫爬取有道实现翻译功能
Nov 27 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
pytorch显存一直变大的解决方案
Apr 08 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
虫族 ZERG 概述
2020/03/14 星际争霸
用PHP实现文件上传二法
2006/10/09 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
从javascript语言本身谈项目实战
2006/12/27 Javascript
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
分享python数据统计的一些小技巧
2016/07/21 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
详解Python IO口多路复用
2020/06/17 Python
css3中新增的样式使用示例附效果图
2014/08/19 HTML / CSS
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
2015国庆节宣传语
2015/07/14 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书