对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 图片验证码代码
Dec 07 Python
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
Python中异常重试的解决方案详解
May 05 Python
目前最全的python的就业方向
Jun 05 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
Python对切片命名的实现方法
Oct 16 Python
使用Django搭建一个基金模拟交易系统教程
Nov 18 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
Python实现自动打开电脑应用的示例代码
Apr 17 Python
Python多线程:主线程等待所有子线程结束代码
Apr 25 Python
python+requests接口自动化框架的实现
Aug 31 Python
python 将html转换为pdf的几种方法
Dec 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
使用swoole扩展php websocket示例
2014/02/13 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
WordPress中"无法将上传的文件移动至"错误的解决方法
2015/07/01 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
jQuery使用each遍历循环的方法
2018/09/19 jQuery
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
简单学习Python time模块
2016/04/29 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
Python查看微信撤回消息代码
2018/06/07 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
高中生学习生活的自我评价
2013/11/27 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
会议欢迎词范文
2015/01/27 职场文书
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis