对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 08 Python
python创建文件备份的脚本
Sep 11 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
python 爬取疫情数据的源码
Feb 09 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
Feb 25 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
浅谈Python 钉钉报警必备知识系统讲解
Aug 17 Python
python基础入门之普通操作与函数(三)
Jun 13 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 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
Session的工作方式
2006/10/09 PHP
php 更新数据库中断的解决方法
2009/06/05 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
JS request函数 用来获取url参数
2010/05/17 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
Python连接DB2数据库
2016/08/27 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
python多进程控制学习小结
2018/10/31 Python
详解python Todo清单实战
2018/11/01 Python
python写一个随机点名软件的实例
2019/11/28 Python
浅析python标准库中的glob
2020/03/13 Python
python递归函数用法详解
2020/10/26 Python
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
学生会离职感言
2014/02/11 职场文书
电子商务求职信
2014/06/15 职场文书
自主招生专家推荐信
2015/03/26 职场文书
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server