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多进程编程
Jun 12 Python
Python用threading实现多线程详解
Feb 03 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
python的中异常处理机制
Aug 30 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
Jun 26 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
Django框架创建项目的方法入门教程
Nov 04 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
python判断正负数方式
Jun 03 Python
python程序需要编译吗
Jun 19 Python
python 爬取免费简历模板网站的示例
Sep 27 Python
上帝为你开了一扇窗之Tkinter常用函数详解
Jun 02 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
晶体管单管来复再生式收音机
2021/03/02 无线电
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
大学生饮食连锁店创业计划书
2014/01/17 职场文书
考察邀请函范文
2015/01/31 职场文书
防溺水主题班会教案
2015/08/12 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers