python实现TCP客户端从服务器下载文件
python实现TCP客户端从服务器下载文件
TCP模拟服务器
import socket
def send_file_2_client(new_client_socket, client_addr):
# 1. 接收客户端 需要下载的文件名 # 接收客户端发送过来的 要下载的文件名 file_name = new_client_socket.recv(1024).decode("utf-8") print("客户端(%s)需要下载文件是:%s" % (str(client_addr), file_name)) file_content = None # 2. 打开这个文件,读取数据 try: f = open(file_name, "rb") file_content = f.read() f.close() except Exception as ret: print("没有要下载的文件(%s)" % file_name) # 3. 发送文件的数据给客户端 if file_content: # new_client_socket.send("hahahghai-----ok-----".encode("utf-8")) new_client_socket.send(file_content)
def main():
# 1.创建套接字 socket tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.绑定本地信息 bind tcp_server_socket.bind(("", 7890)) # 3.让默认的套接字由主动变为被动 listen tcp_server_socket.listen(128) while True: # 4.等待客户端的链接 accept new_client_socket, client_addr = tcp_server_socket.accept() # 5. 调用发送文件函数,完成为客户端服务 send_file_2_client(new_client_socket, client_addr) # 6. 关闭套接字 new_client_socket.close() tcp_server_socket.close()
if name == "__main__":
main()
TCP模拟客户端
"""tcp_文件下载客户端"""
from socket import *
def main():
# 创建套接字 tcp_client_socket = socket(AF_INET, SOCK_STREAM) # 目的信息 server_ip = input("请输入服务器的IP:") server_port = int(input("请输入服务器的port:")) server_addr = (server_ip, server_port) # 连接服务器 connect(目标Ip, 目标端口) tcp_client_socket.connect(server_addr) # 输入需要下载的文件名 file_name = input("请输入需要下载的文件名: ") # 发送数据 tcp_client_socket.send(file_name.encode("utf-8")) # 接收对方发过来的数据,最大值为1024字节(1K) recv_data = tcp_client_socket.recv(1024) if recv_data: with open("[接收]"+file_name, "wb")as f: f.write(recv_data) # 关闭套接字 tcp_client_socket.close()
if name == '__main__':
main()
注意:使用时,一定要先开启服务器,再开启客户端;关闭时也要先关闭客户端,再关闭服务器
作者:Vince Li
来源:CSDN
原文:https://blog.csdn.net/weixin_43250623/article/details/89074221
版权声明:本文为博主原创文章,转载请附上博文链接!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java面试之http知识点(必问)
Java面试之http知识点(必问)详细介绍httpHTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。点击这里了解 http 1.0 vs 2.0 区别。在OSI七层模型中,HTTP协议位于最顶层的应用层中。通过浏览器访问网页就直接使用了HTTP协议。使用HTTP协议时,客户端首先与服务端的 80 端口建立一个TCP连接,然后在这个连接的基础上进行请求和应答,以及数据的交换。 HTTP有两个常用版本,分别是HTTP1.0和HTTP1.1。主要区别在于HTTP1.0中每次请求和应答都会使用一个新的TCP连接,而从HTTP1.1开始,运行在一个TCP连接上发送多个命令和应答。因此大幅度减少了TCP连接的建立和断开,提高了效率。 特点 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。灵活...
- 下一篇
VUE配置打包部署服务器Nginx代理访问配置域名
上传服务器有多种方式第一种:github.com建立私有项目,现在免费开放,本地push到github,服务器从github再pull下来。第二种:使用FTP软件上传,比如FileZilla等等。第三种:服务器搭建Git自动化部署。前两种适合小型项目,第三种适合团队协作规范开发。 打包之前配置文件build/utils.js 配置解决打包后找不到静态文件的问题 publicPath: '../../', config/index.js 解决js文件找不到的问题 assetsPublicPath: './', 终端输入npm run build 打包,生成dist文件夹dist文件夹和package.json为同级目录,放到服务器上,可以用以上三种方法配置Nginx代理访问配置域名,找到nginx.conf文件,注意空格该有就要有,没有就没有 vi /usr/local/nginx/conf/nginx.conf user www www; worker_processes auto; error_log /home/wwwlogs/nginx_error.log crit; pid /...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境