对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实现自动更换ip的方法
May 05 Python
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
Python正则表达式和re库知识点总结
Feb 11 Python
python之生产者消费者模型实现详解
Jul 27 Python
python3下pygame如何实现显示中文
Jan 11 Python
浅谈Pytorch torch.optim优化器个性化的使用
Feb 20 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
Django如何与Ajax交互
Apr 29 Python
python实现三次密码验证的示例
Apr 29 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
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
PHP中cookie知识点学习
2018/05/06 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
对python判断是否回文数的实例详解
2019/02/08 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
Weblogic的布署方式
2013/08/23 面试题
Ajxa常见问题都有哪些
2014/03/26 面试题
水务局局长岗位职责
2013/11/28 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
学生打架检讨书
2014/10/20 职场文书
学校捐书活动总结
2015/05/08 职场文书
2015年小学财务工作总结
2015/07/20 职场文书