对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中列表生成式和生成器的区别
Aug 03 Python
python读写json文件的简单实现
Apr 11 Python
python2和python3在处理字符串上的区别详解
May 29 Python
python 杀死自身进程的实现方法
Jul 01 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
django认证系统 Authentication使用详解
Jul 22 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
python实现智能语音天气预报
Dec 02 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
Python 中@property的用法详解
Jan 15 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 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
php session劫持和防范的方法
2013/11/12 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
Python入门篇之字典
2014/10/17 Python
python通过post提交数据的方法
2015/05/06 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
2019/08/28 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
利用python实现AR教程
2019/11/20 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
公司开业庆典主持词
2014/03/21 职场文书
员工表扬信怎么写
2015/05/05 职场文书
小学生运动会广播
2015/08/19 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书