多线程FTP(1)——多线程网络通信简单实现

本文介绍了如何使用多线程来实现一个FTP服务,以解决单线程FTP服务中只能处理一个客户端连接的问题。通过Python的threading和socketserver模块,创建了能够同时处理多个客户端登录和其他命令的FTP服务端和客户端。
摘要由CSDN通过智能技术生成

多线程FTP(1)——多线程网络通信简单实现

之前写了一个FTP项目,但实际上我们写的FTP项目只满足单线程——这就像是打电话一样,当一个客户端和服务端连接,其他客户端就会因为服务端占线而无法连接,必须等之前连接的客户端“挂断”才能连接通信。

请添加图片描述

就像演示的一样,

  1. 当一个客户端完成连接(比如说登录,和查看当前目录时)
  2. 另一个客户端无法完成和服务端的通信,比如说登录;
  3. 而只有在前一个客户端断开连接,服务端才会去处理后一个客户端的信息(即完成登录)

很显然,一次只满足一个用户登录并不满足我们需求,我们想要的肯定是可以允许多个用户登录,服务端同时处理多个用户命令的FTP项目。

于是,我们想到了多线程的的方法去实现多个用户同时登录。

什么是多线程

多线程

threading ,利用 CPU 和 IO 可以同时执行的原来,让 CPU 不会干巴巴等待 IO 完成。

个人理解

单线程

在这里插入图片描述

多线程

在这里插入图片描述

简单来说,多线程就是一个计算机的统筹处理事情的操作,遇到需要等待的事情,就“先去”(在等待的同时)做可以即时做的事情。(理论上,多线程会增加CPU的内存和计算操作,但具体会增加多少,我没有研究过)

thread 版本

服务端

import socket, threading, time

def create():
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    server.bind(("127.0.0.1", 8080))

    server.listen
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值