对python中UDP,socket的使用详解


Posted in Python onAugust 22, 2019

讲到UDP和TCP之前咱们先了解一下socket

Socket

socket简称套接字,是进程间通信的一种方式。与其他的方式的进程间的通讯的方式不同的是,socket是实现了主机间进程间的通讯。我们网络上的各种服务都是基于socket来完成的。例如QQ.微信。

怎么样创建socket呢。

创建一个tcpsocket:

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

创建一个UDP类型的socket;

# # 创建套接字
# udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

UDP介绍

udp—?数据报文协议,是一个无连接的简单的面向数据报的运输层协议,UDP不提供可靠性,他只是将应用程序传送给IP层的数据报文发送出去,并不保证能否达到目的地。由于UDP在传输的过程中不需要和服务器建立链接。且没有超时重发的的机制。故而传输很快。

下面简单通过示意图来研究一下UDP。

对python中UDP,socket的使用详解

UDP 发送数据

import socket
# 设置socket
udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 设置目的端口和IP
sendArr = ('192.168.31.174',65535)
sendData = input('请输入你要发送的信息')
# 发送数据,此处有一个坑是sendto()里面的参数必须二进制数据,不能直接传字符串
udpSocket.sendto(sendData.encode('utf-8'),sendArr)

udpSocket.close()

UDP 接收数据

import socket
# 创建UDP套接字

udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定端口号
udpSocket.bind(("", 7789))
recvData = udpSocket.recvfrom(1024)
content, destInfo = recvData

print("content is %s"%content)
print("content is %s"%content.decode("utf-8"))

print(recvData)
udpSocket.close()

从打印结果我们可以看出recvData中包含是一个元祖,元祖接收到数据方ip.和端口号的。

发送通过端口号和IP将数据发送给接收方,接收方监听端口,这样就完成一次UDP通信的过程,这个过程涉及到,发送方组包,接收解包的过程。

Python 相关文章推荐
python re正则表达式模块(Regular Expression)
Jul 16 Python
初步认识Python中的列表与位运算符
Oct 12 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
python 通过logging写入日志到文件和控制台的实例
Apr 28 Python
python将秒数转化为时间格式的实例
Sep 16 Python
简单介绍python封装的基本知识
Aug 10 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
python logging添加filter教程
Dec 24 Python
python多维数组分位数的求取方式
Mar 03 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 #Python
Python学习笔记之集合的概念和简单使用示例
Aug 22 #Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 #Python
python爬虫增加访问量的方法
Aug 22 #Python
Python中字典与恒等运算符的用法分析
Aug 22 #Python
python实现通过flask和前端进行数据收发
Aug 22 #Python
python2.7的flask框架之引用js&css等静态文件的实现方法
Aug 22 #Python
You might like
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
php生成验证码函数
2015/10/20 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
详解jquery选择器的原理
2017/08/01 jQuery
js实现扫雷小程序的示例代码
2017/09/27 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
详解python单元测试框架unittest
2018/07/02 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
django使用channels实现通信的示例
2020/10/19 Python
关于python中remove的一些坑小结
2021/01/04 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
国贸专业个人求职信分享
2013/12/04 职场文书
中专生职业生涯规划书范文
2014/01/10 职场文书
大学生暑期实践感言
2014/02/26 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
人工作失职检讨书
2015/05/05 职场文书