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写的图片蜘蛛人代码
Aug 27 Python
python多线程用法实例详解
Jan 15 Python
深入讲解Python中的迭代器和生成器
Oct 26 Python
python 标准差计算的实现(std)
Jul 29 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
Python urlencode和unquote函数使用实例解析
Mar 31 Python
Python判断三段线能否构成三角形的代码
Apr 12 Python
用Python 爬取猫眼电影数据分析《无名之辈》
Jul 24 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 24 Python
python基础之//、/与%的区别详解
Jun 10 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
PHP echo()函数讲解
2019/02/15 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
javascript new 需不需要继续使用
2009/07/02 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
小程序实现分类页
2019/07/12 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
pandas 层次化索引的实现方法
2019/07/06 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
python -v 报错问题的解决方法
2020/09/15 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
超市营业员岗位职责
2013/12/20 职场文书
校园创业策划书
2014/01/14 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
前处理班长职位说明书
2014/03/01 职场文书
高二学生评语大全
2014/04/25 职场文书
法定代表人资格证明书
2015/06/18 职场文书
2019个人半年工作总结
2019/06/21 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis