python模拟百度网盘(1)

实现服务器与客户端的简单通信

服务器代码 

import socket
def tcp_server():s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#tcp的socket, 开启一个缓冲区addr=("192.168.0.106",2000)s.bind(addr)s.listen(128)#同时可以往缓冲区中放入的连接数new_client, client_addr=s.accept()#和客户端的s.connect()一起实现三次握手, 接收连接请求, 返回客户端的IP地址和端口号print(client_addr)new_client.send("I am serve".encode('utf8'))data=new_client.recv(100)print(data.decode('utf8'))new_client.close()#开始四次挥手s.close()
def udp_server():s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # 第一个socket代表socket包, 第二个socket代表socket类addr = ("192.168.0.106", 2000)  # 写1024以上端口s.bind(addr)  # 失败直接抛出异常,绑定服务器的IP地址和端口data, client_addr = s.recvfrom(100)  # 100代表接收100字节, recvfrom的大小要>sendto发送的大小s.sendto('world'.encode('utf8'), client_addr)s.close()
if __name__=="__main__":tcp_server()

客户端代码 

import socket
def udp_client():client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)dest_addr=("192.168.0.106",2000)#写1024以上端口, 目标服务器的IP地址和端口client.sendto(b'hello',dest_addr)data, _=client.recvfrom(100)print(data.decode('utf8'))client.close()
def tcp_client():client=socket.socket(socket.AF_INET, socket.SOCK_STREAM)dest_addr=("192.168.0.106",2000)client.connect(dest_addr)data=client.recv(100)print(data.decode('utf8'))client.send("I am a man".encode('utf8'))client.close()
if __name__=="__main__":tcp_client()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

edm邮件是什么意思:与普通邮件有何不同?

edm邮件是什么意思?如何优化邮件内容以提高转化率? edm邮件因其独特的营销价值而备受关注。那么,edm邮件究竟是什么意思呢?它与普通邮件又有哪些不同呢?下面,AokSend就来为大家介绍一下。 edm邮件的概念与…

【SpringCloud微服务实战07】Sentinel 服务保护

Sentinel 是阿里巴巴开源的一款微服务流量控制组件。主要作用: 流量控制:避免因瞬间高并发流量而导致服务故障流。超时处理、线程隔离、降级熔断:避免因服务故障引起的雪崩问题。一、Sentinel 安装 1、安装Sentinel控制台,下载jar包并启动:Releases alibaba/Sentinel G…

VUE2改变数组对象的方法($set)

需求:vue中数组或者对象的长度无法监听时,需要实时刷新数据 思路:通过$set方法实现数据监听 //改变数组 1.全局方法(不常用) Vue.set(vm.items, indexOfItem, newValue) //Vue.set(数组名字, 改变的索引位置, 需要更改的值) // Vue.set(arr,…

基于大数据的商业模式创新研究

目录 一、导论 2 (一)研究背景 2 (二)研究意义 2 (三)研究内容 3 (四)研究思路与研究方法 4 (五)国内外研究现状 6 二、大数据的界定与应用概况 7 &#xff…

python cffi模块笔记

20240312 本次尝试使用cffi想要实现将嵌入式一段代码图形化,python编译器运行的时候还很正常,打包后发现总报错,内容如下: fatal error C1083: 无法打开包括文件: “Python.h”: No such file or directory Traceback (most re…

ubuntu源码安装nginx

安装依赖项 首先,确保安装了编译Nginx所需的依赖项。打开终端并运行以下命令: sudo apt-get update sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev下载Nginx源码 因Ubuntu的openssl版本太新,…

RPC基础知识回顾

RPC基础知识回顾 1、先认识一下大家熟悉的HTTP 大家都了解HTTP吧。相信项目中也用过一些。 比如: JDK自带的老旧的HttpURLConnection,封装写的很累,java8之前基于HTTP1.0。在java9开始支持Http2.0Spring的其中RestTemplate都是基于HTTP/1.1的请求。最新的还有Sp…

Transformer家族

在《Transformer原理》中我们介绍了,现在很多大模型都是基于Transformer,其中最出名就是GPT和BERT模型,在GPT和BERT模型被提出来之后,NLP领域也出现了基于Transformer结构的模型,按照模型结构基本可以分为三类&#xf…

MyBatis3源码深度解析(十)MyBatis常用工具类(三)MetaObjectMetaClass

文章目录 3.4 MetaObject3.5 MetaClass 3.4 MetaObject MetaObject是MyBatis提供的反射工具类,可以方便地获取和设置对象的属性值。 该工具类在MyBatis源码中出现的概率非常高。 假设有两个实体类:用户信息User和订单信息Order,一个用户可…

HCIA-Datacom题库(自己整理分类的)_50_路由判断【11道题】

1.以下两条配置命令可以实现路由器RTA去往同一目的地10.1.1.0的路由主备备份。√ [RTA]ip route-static 10.1.1.0 24 12.1.1.1 Permanent [RTA]ip route-static 10.1.1.0 24 13.1.1.1 2.动态路由协议能自动适应网络拓扑的变化。√ 3.如图,只需要在AR1上配置静态…

嵌入式中要能看懂这50个电路分享

大家好,今天主要给大家分享一下,嵌入式工程师常见的硬件电路。 单片机 电源 声音模块 收音机 485 蓝牙 光耦 can 光敏电阻 单片机 矩阵 单片机电路 时钟 ADC 接口电路 红外发射 显示模块 红外接收 蜂鸣器驱动 流水灯 usb供电 烧录电路 数码管 EEPROM LCD…

为何读了这么多书,依然不知道怎么过好一生?

我们从小到大都在不断学习,读书,工作,生活,却仍然困惑如何过好这一生?那是因为知识和智慧之间有很大的差别。 第一、实践是知识转化为智慧的关键 首先,学习不仅仅是汲取知识的过程,更重要的是…

Docker 搭建 Nacos 集群教程

随着微服务架构的流行,服务注册和发现成为了构建分布式系统的关键组成部分。Nacos 是阿里巴巴开源的服务发现、配置管理和服务管理平台,它提供了注册中心和配置中心的功能,能够轻松地管理微服务的注册与发现,以及动态配置的管理。…

lnmp环境部署-im

安装nginx 配置nginx源 vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key module_hotfixestrue安装nginx yum …

宽带波束形成

上一篇介绍了窄带波束形成,当信号的带宽增加,窄带波束形成的性能会降低很多。 首先从窄带beamforming说起 阵列模式:M个阵元组成的线性阵列 当有个输入信号,,对应的信号的入射方向为,。第一个信号是感兴…

CentOS7下使用Dockers安装MinIO

CentOS7下使用Dockers安装MinIO 1、下载2、启动3、检查4、查看日志5、查看minio版本6、删除容器 1、下载 docker pull minio/minio2、启动 docker run -p 9000:9000 -p 9001:9001 --name minio -d --restartalways -e "MINIO_ACCESS_KEYminio" -e "MINIO_SECR…

【力扣】88. 合并两个有序数组

题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 **注意:**最终&#xf…

Uni-app开发入门:跨平台应用开发指南

1. 什么是Uni-app? Uni-app是一个基于Vue.js的跨平台应用开发框架,允许开发者使用一套代码同时构建iOS、Android、H5以及小程序等多个平台的应用。通过Uni-app,开发者可以大大提高开发效率,降低维护成本。 2. Uni-app的特点 跨…

再写树型列表

再写树型列表 HTML标签的选择th:block的使用 以前用jQuery写过一个树型列表,当时选择采用jQuery或者说javascript实现的原因是可以动态获取数据,实现无限层级。现在又要用到这个东西,发现一个问题:其实大多数时候数据并不多&#…

break和continue区别及使用

break和continue是跳转控制语句,本篇文章将详细说明这两个的概念及作用。 1、continue 这张图是2024年3月的日期图,列出了每日和每周。 假设上面是上班工作日期,一个月有三十天,但是每周只有七天。简单思考一下,每周的…