网络通信学习
文章平均质量分 64
世界的隐喻
我是个在黑暗中大雪纷飞的人啊
展开
-
多线程FTP项目(4)—— Mysql数据库 + FTP
多线程FTP项目(4)——Mysql数据库+FTP。原创 2022-07-15 12:37:14 · 402 阅读 · 0 评论 -
多线程FTP项目(3)—— socketserver版本多线程FTP项目
多线程FTP项目(3)—— socketserver版本多线程FTP项目threading 版 本来是想自己写一个实现多进程的 FTP 项目的,也就是说不使用 socketserver 模块实现多线程 FTP 项目,但是我写到一半调试的时候发现,虽然可以实现多用户同时登录,但是在输入命令之后,客户端很容易被 “远程计算机直接断开连接”。目前还是不清楚出了什么问题,不过看了 socketserver 模块源码后,发现该模块的多线程实现是比较复杂的,所以我觉得出现这个 bug 很大可能是因为原创 2022-05-17 14:31:42 · 609 阅读 · 0 评论 -
多线程FTP(2)—— socketserver 部分源码解读
多线程FTP(2)—— socketserver 部分源码解读前面我们用 socketserver 演示了 sockeserver 版本的多线程网络通信实现。但实际上我们对于 socketserver 现在处于 “知其然不知其所以然” 的情况,比如说,为什么自己写的类中方法一定要是“handle”?为什么我们只用写通信循环,为什么不用写链接循环?所有的这些问题其实都可以通过分析 socketserver 的源码来回答。(pycharm可以通过导入 socket server,并且按住 Ctrl+鼠标点原创 2022-05-16 11:09:40 · 320 阅读 · 1 评论 -
多线程FTP(1)——多线程网络通信简单实现
多线程FTP(1)——多线程网络通信简单实现之前写了一个FTP项目,但实际上我们写的FTP项目只满足单线程——这就像是打电话一样,当一个客户端和服务端连接,其他客户端就会因为服务端占线而无法连接,必须等之前连接的客户端“挂断”才能连接通信。就像演示的一样,当一个客户端完成连接(比如说登录,和查看当前目录时)另一个客户端无法完成和服务端的通信,比如说登录;而只有在前一个客户端断开连接,服务端才会去处理后一个客户端的信息(即完成登录)很显然,一次只满足一个用户登录并不满足我们需求,我们想要的肯原创 2022-05-14 22:17:54 · 1543 阅读 · 0 评论 -
网络编程学习(11)/ FTP项目(5) ——文件上传和上传断点续存功能
网络编程学习(11)/ FTP项目(5) ——文件上传和上传断点续存功能`服务端 lib 文件夹下的 main.py 状态码的变化`文件上传功能`服务端 lib 文件夹下的 main.py``客户端 client 文件夹下的 FTPClient.py`文件上传断点续存功能`服务端 lib 文件夹下的 main.py``客户端 client 文件夹下的 FTPClient.py`运行结果服务端 lib 文件夹下的 main.py 状态码的变化STATUS_CODE = { 200: "Us原创 2022-03-20 18:06:49 · 272 阅读 · 0 评论 -
网络编程学习(10)/ FTP项目(4) ——文件下载和下载断点续存功能
网络编程学习(10)/ FTP项目(4) ——文件下载和下载断点续存功能服务端`lib 文件夹下 main.py`客户端`client文件夹下 FTPClient.py 代码 interactive函数 增加部分``client文件夹下 FTPClient.py `运行结果终端命令结果运行后项目目录服务端lib 文件夹下 main.py def _get(self, header_dir): """从服务端下载文件""" filename = header_dir原创 2022-03-18 22:39:46 · 523 阅读 · 0 评论 -
网络编程学习(9)/ FTP项目(3) ——目录切换、目录查看功能
网络编程学习(9)/ FTP项目(3) ——目录切换、目录查看功能调用功能函数以及对参数数量进行判断客户端 `server 文件夹下 FTPClient.py`状态码的变化服务端 `lib 文件夹下 main.py`查看服务端当前目录客户端 `server 文件夹下 FTPClient.py`服务端 `lib 文件夹下 main.py`查看客户端目录客户端 `server 文件夹下 FTPClient.py`切换目录客户端 `server 文件夹下 FTPClient.py`服务端 `lib 文件夹下 ma原创 2022-03-18 10:06:11 · 2030 阅读 · 0 评论 -
网络编程学习(8)/ FTP项目(2) —— 项目辅助功能以及用户认证功能
网络编程学习(8)/ FTP项目(2) —— 项目辅助功能以及用户认证功能辅助功能:报头发送以及回复服务端 `lib 文件夹下 main.py`客户端 `server 文件夹下 FTPClient.py`用户认证功能`conf 文件夹下 setting.py 增加部分``conf 文件夹下 accounts.ini`服务端 `lib 文件夹下 main.py`客户端 `server 文件夹下 FTPClient.py`运行结果服务端客户端 ![请添加图片描述](https://img-blog.csdnim原创 2022-03-16 22:21:39 · 439 阅读 · 0 评论 -
网络编程学习(7)/ FTP项目(1) —— 项目需求梳理以及基本框架搭建
网络编程学习(7)/ FTP项目(1) —— 项目需求梳理以及基本框架搭建项目需求梳理项目基本框架搭建项目文件说明bin 文件夹下 FTPServer.py 文件lib 文件夹下 management.pylib 文件夹下 main.pyconf 文件夹下 setting.py 文件client 文件夹下 FTPClient.py 文件当前运行结果(终端运行)服务端客户端项目需求梳理1. 用户登录认证(目前只实现一次连接一个客户端,即单线程) 1.1 用户密码 md5 加密2. 查看目录原创 2022-03-16 11:09:57 · 1368 阅读 · 0 评论 -
网络编程学习(6)—— 基于SOCKET实现文件传输功能
网络编程学习(6)—— 基于SOCKET实现文件传输功能文件传输功能和执行终端命令功能的区别代码实现运行结果文件传输功能和执行终端命令功能的区别文件传输功能实现和实现执行终端命令功能的区别不需要执行命令,即不需要使用 subprocess 模块判断文件大小方式不是文件内容的长度,而是使用 os模块import osos.path.getsize(文件路径)上传文件时,为防止一次上传完整文件导致内存不足,上传时,一行行上传with open(文件, "rb") as f: for原创 2022-03-06 22:04:32 · 1002 阅读 · 1 评论 -
网络编程学习(5)—— 基于SOCKET模拟SSH远程执行命令后出现的粘包问题及解决方案
网络编程学习(5)—— 基于SOCKET模拟SSH远程执行命令后出现的粘包问题及解决方案粘包问题:问题出现粘包问题:分析粘包问题:文字版解决方案粘包问题:struct 模块补充粘包问题:简单代码解决粘包问题:终极代码解决粘包问题:问题出现前面我们已经实现了利用socket模拟远程执行命令,但是我们在代码运行中很有可能会遇到这样的问题,如下图。客户端运行结果我们发现命令 ipconfig命令的结果长度显然已经超过了 1024 phone.recv(1024),而这样的结果就是该命令的结果分成两部分发原创 2022-03-05 12:02:22 · 673 阅读 · 0 评论 -
网络编程学习(4)—— 基于SOCKET实现模拟SSH远程执行命令
网络编程学习(4)—— 基于SOCKET实现模拟SSH远程执行命令网络通信的应用python 如何利用代码执行终端命令尝试一、`os`模块解决方法、`subprocess` 模块代码实现运行结果网络通信的应用根据之前的网络通信的学习,我们可以很简单的想到网络通信可以用于搭建一个类似聊天室的程序。其实网络通信一个重要的应用是连接服务器执行命令,以 Windows 系统为例,比如说:dir 是查看本地文件目录的命令,ipconfig 是查看本地网卡 IP 地址命令,tasklist 是查看运行进程的命令……原创 2022-03-04 15:02:13 · 1035 阅读 · 1 评论 -
网络编程学习(3)—— 基于SOCKET实现简单套接字通信的链接循环
网络编程学习(3)—— 基于SOCKET实现简单套接字通信的链接循环目前代码存在的问题解决方案——原代码分析代码实现运行结果目前代码存在的问题前面我们已经完成了基于 SOCKET 的实现了通信循环的简单套接字通信程序,并且还优化了其中的两个小问题,让程序更加稳定。但俗话说的好,“旧的刚忘掉,新的就来到”,所以我们很无奈的发现了一个问题,就是我们的程序只能实现一个客户端同服务端 “对话” ,而很显然这和我们现实的要求肯定相去甚远——在现实中我们不可能有一个只服务一个客户的服务端(即要服务不同的客户就必须原创 2022-03-03 22:27:14 · 375 阅读 · 0 评论 -
网络编程学习(2)—— 基于SOCKET简单套接字通信的 bug 修复
基于简单套接字通信的 bug 修复目前实现的添加了通信循环的套接字通信的一些问题一次只能发送一条消息客户端向服务端发送消息时发现远程计算机拒绝连接发空消息时程序进入死循环,并占用大量内存代码优化优化之后发现的问题目前实现的添加了通信循环的套接字通信的一些问题一次只能发送一条消息客户端向服务端发送消息时发现远程计算机拒绝连接发空消息时程序进入死循环,并占用大量内存代码优化优化之后发现的问题...原创 2022-03-03 16:54:42 · 316 阅读 · 0 评论 -
网络编程学习(1)—— 基于SOCKET实现简单套接字通信
网络编程学习(1)—— 基于SOCKET实现简单套接字通信套接字通信简单理解网络通信简单理解简单套接字通信类比代码实现运行结果优化:通信循环套接字通信简单理解网络通信简单理解要想实现网络通信,简单理解就是用户启动客户端并连接到服务端,用户使用客户端向服务端发送信息(请求),服务端响应客户端。简单套接字通信类比我们可以将简单套接字通信的过程中类比成打电话。对于服务端而言,实现通信的过程可以类比为以下七步:买手机装上电话卡开机等待电话接通收发消息挂断电话关机而对于客户端,实现通信原创 2022-03-01 22:21:55 · 346 阅读 · 0 评论