对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 相关文章推荐
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
Python使用functools实现注解同步方法
Feb 06 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
python 图像平移和旋转的实例
Jan 10 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
详解如何减少python内存的消耗
Aug 09 Python
python多线程实现TCP服务端
Sep 03 Python
Python实现屏幕录制功能的代码
Mar 02 Python
使用pytorch实现论文中的unet网络
Jun 24 Python
python用Configobj模块读取配置文件
Sep 26 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 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
dedecms系统常用术语汇总
2007/04/03 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
九种原生js动画效果
2015/11/11 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
vue中 this.$set的用法详解
2019/09/06 Javascript
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
python实现字符串和日期相互转换的方法
2015/05/13 Python
Python Property属性的2种用法
2015/06/21 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
募捐倡议书
2014/04/14 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
二审代理词范文
2015/05/25 职场文书
合作合同协议书
2016/03/21 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
MySQL 时间类型的选择
2021/06/05 MySQL
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python