对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注释详解
Jun 01 Python
在Windows中设置Python环境变量的实例讲解
Apr 28 Python
Python获取指定字符前面的所有字符方法
May 02 Python
Django 连接sql server数据库的方法
Jun 30 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
django-rest-swagger对API接口注释的方法
Aug 29 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
python加载自定义词典实例
Dec 06 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
python爬虫中抓取指数的实例讲解
Dec 01 Python
详解Python中openpyxl模块基本用法
Feb 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
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
List all the Databases on a SQL Server
2007/06/21 Javascript
JavaScript入门学习书籍推荐
2008/06/12 Javascript
ToolTips JQEURY插件之简洁小提示框效果
2011/11/19 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
RequireJs的使用详解
2017/02/19 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
javascript获取select值的方法完整实例
2019/06/20 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
python的socket编程入门
2018/01/29 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
Python-for循环的内部机制
2020/06/12 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
pycharm导入源码的具体步骤
2020/08/04 Python
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
安全宣传标语口号
2014/06/06 职场文书
婚前协议书标准版
2014/10/19 职场文书
2016年校长新年寄语
2015/08/17 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书