对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实现的使用telnet登陆聊天室实例
Jun 17 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
python获取外网IP并发邮件的实现方法
Oct 01 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
python实现远程控制电脑
May 23 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
Python Web静态服务器非堵塞模式实现方法示例
Nov 21 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
python2.7使用scapy发送syn实例
May 05 Python
Python如何读写CSV文件
Aug 13 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下escape解码函数的实现方法
2010/08/08 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
简单谈谈favicon
2015/06/10 PHP
javascript 隔行换色函数代码
2010/10/24 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
Less 安装及基本用法
2018/05/05 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
Python input函数使用实例解析
2019/11/22 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
Python 如何测试文件是否存在
2020/07/31 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
播音主持女孩的自我评价分享
2013/11/20 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
参观考察邀请函范文
2014/01/29 职场文书
高中学生评语大全
2014/04/25 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
党员转正大会主持词
2015/07/02 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL