对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调用xlsxwriter创建xlsx的方法
May 03 Python
python实现内存监控系统
Mar 07 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
python获取本机所有IP地址的方法
Dec 26 Python
python使用threading.Condition交替打印两个字符
May 07 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
如何基于Python批量下载音乐
Nov 11 Python
python如何获取apk的packagename和activity
Jan 10 Python
新手入门学习python Numpy基础操作
Mar 02 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
详解python datetime模块
Aug 17 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
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
初识Javascript小结
2015/07/16 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
React中的render何时执行过程
2018/04/13 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
Python微信操控itchat的方法
2019/05/31 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
Python修改DBF文件指定列
2020/12/19 Python
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
老师给学生的表扬信
2014/01/17 职场文书
学生保证书范文
2014/04/28 职场文书
2014年发展党员工作总结
2014/11/12 职场文书