对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 相关文章推荐
Django的信号机制详解
May 05 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
python中logging包的使用总结
Feb 28 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
python3去掉string中的标点符号方法
Jan 22 Python
Django Rest framework权限的详细用法
Jul 25 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
python数据爬下来保存的位置
Feb 17 Python
python zip,lambda,map函数代码实例
Apr 04 Python
Python爬取12306车次信息代码详解
Aug 12 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
Zend的MVC机制使用分析(二)
2013/05/02 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
PHP导入导出Excel代码
2015/07/07 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
用python写的一个wordpress的采集程序
2016/02/27 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
编写strcpy函数
2014/06/24 面试题
上学迟到的检讨书
2014/01/11 职场文书
小学运动会口号
2014/06/07 职场文书
中队活动总结
2014/08/27 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
旷课检讨书范文
2015/01/27 职场文书
护士自荐信怎么写
2015/03/06 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android