对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简单实现子网掩码转换的方法
Apr 13 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
Python基于回溯法子集树模板解决取物搭配问题实例
Sep 02 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
python处理multipart/form-data的请求方法
Dec 26 Python
Django实现网页分页功能
Oct 31 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
Python中url标签使用知识点总结
Jan 16 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
Feb 27 Python
django使用多个数据库的方法实例
Mar 04 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常用技巧总结(附函数代码)
2012/02/04 PHP
一个简单的PHP验证码实现代码
2014/05/10 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
webpack引入eslint配置详解
2018/01/22 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
python装饰器decorator介绍
2014/11/21 Python
Python爬虫代理IP池实现方法
2017/01/05 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
县优秀教师事迹材料
2014/01/31 职场文书
春季防火方案
2014/05/10 职场文书
承诺书范文
2014/06/03 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android