对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 相关文章推荐
python2.6.6如何升级到python2.7.14
Apr 08 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
python 获取一个值在某个区间的指定倍数的值方法
Nov 12 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
Nov 29 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 Python
在python中读取和写入CSV文件详情
Jun 28 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
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP实现递归无限级分类
2015/10/22 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
Python中单、双下划线的区别总结
2017/12/01 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
python实现动态创建类的方法分析
2019/06/25 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
关于保护环境的标语
2014/06/09 职场文书
岗位说明书标准范本
2014/07/30 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
小学远程教育工作总结
2015/08/13 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技
Redis实现订单过期删除的方法步骤
2022/06/05 Redis