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实现的数据结构与算法之双端队列详解
Apr 22 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
详解python的几种标准输出重定向方式
Aug 15 Python
Django中自定义模型管理器(Manager)及方法
Sep 23 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
python实现猜数游戏
Mar 27 Python
详解python算法常用技巧与内置库
Oct 17 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
基于tensorflow权重文件的解读
May 26 Python
Python连续赋值需要注意的一些问题
Jun 03 Python
opencv检测动态物体的实现
Jul 21 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
文件上传程序的全部源码
2006/10/09 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
在 Laravel 中动态隐藏 API 字段的方法
2019/10/25 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
python实现的阳历转阴历(农历)算法
2014/04/25 Python
Python网络爬虫实例讲解
2016/04/28 Python
Python切片操作实例分析
2018/03/16 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
python redis存入字典序列化存储教程
2020/07/16 Python
影视制作岗位职责
2013/12/04 职场文书
小学校园活动策划
2014/01/30 职场文书
给校长的建议书600字
2014/05/15 职场文书
工商局调档介绍信
2015/10/22 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
深入理解go slice结构
2021/09/15 Golang