对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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python操作SQLite简明教程
Jul 10 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
Django admin美化插件suit使用示例
Dec 12 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
Python中pymysql 模块的使用详解
Aug 12 Python
python3实现微型的web服务器
Sep 03 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
构建高效的python requests长连接池详解
May 02 Python
Django CBV模型源码运行流程详解
Aug 17 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的五种设计模式
2012/09/05 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
json跟xml的对比分析
2008/06/10 Javascript
jQuery ui 1.7更新小结
2009/08/15 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
javascript中undefined的本质解析
2019/07/31 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
Python的时间模块datetime详解
2017/04/17 Python
Python探索之修改Python搜索路径
2017/10/25 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
python plotly画柱状图代码实例
2019/12/13 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
什么叫做SQL注入,如何防止
2016/10/04 面试题
第一军规观后感
2015/06/12 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS