对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 ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
Python yield 使用方法浅析
May 20 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
python生成器,可迭代对象,迭代器区别和联系
Feb 04 Python
python模拟表单提交登录图书馆
Apr 27 Python
Python函数返回不定数量的值方法
Jan 22 Python
python3 批量获取对应端口服务的实例
Jul 25 Python
python实现简单成绩录入系统
Sep 19 Python
Python 列表中的修改、添加和删除元素的实现
Jun 11 Python
python自动生成证件号的方法示例
Jan 14 Python
Python Django模型详解
Oct 05 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
短波的认识
2021/03/01 无线电
通过文字传递创建的图形按钮
2006/10/09 PHP
php过滤危险html代码
2008/08/18 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
使用python模拟高斯分布例子
2019/12/09 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
国旗下的讲话演讲稿
2014/05/08 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
工作散漫检讨书
2014/09/16 职场文书