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中list循环语句用法实例
Nov 10 Python
详解Python的单元测试
Apr 28 Python
python实现通过代理服务器访问远程url的方法
Apr 29 Python
python学生信息管理系统(初级版)
Oct 17 Python
Python字符串逆序的实现方法【一题多解】
Feb 18 Python
Python实现多进程的四种方式
Feb 22 Python
tensorflow如何批量读取图片
Aug 29 Python
python单例设计模式实现解析
Jan 07 Python
python程序文件扩展名知识点详解
Feb 27 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
基于python纯函数实现井字棋游戏
May 27 Python
浅谈matplotlib默认字体设置探索
Feb 03 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操作mysqli(示例代码)
2013/10/28 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
js四舍五入数学函数round使用实例
2014/05/09 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
Python连接mysql数据库的正确姿势
2016/02/03 Python
python线程池threadpool使用篇
2018/04/27 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
python实现简单图书管理系统
2019/11/22 Python
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
教师自我鉴定范文
2013/11/10 职场文书
小学运动会表扬稿
2014/01/19 职场文书
上党课的心得体会
2014/09/02 职场文书
交通安全横幅标语
2014/10/07 职场文书
党支部四风整改方案
2014/10/25 职场文书
2014年底个人工作总结
2015/03/10 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
办公室禁烟通知
2015/04/23 职场文书
主持人开场白台词
2015/05/29 职场文书
孙振耀退休感言
2015/08/01 职场文书
银行工作心得体会范文
2016/01/23 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
JavaScript流程控制(分支)
2021/12/06 Javascript
Python使用DFA算法过滤内容敏感词
2022/04/22 Python