tcp文件下载客户端+服务端
客户端:
import socket if __name__ == '__main__':
# 创建tcp客户端socket
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 和服务端socket建立连接
tcp_client_socket.connect(("192.168.131.106", 7878))
# 接收用户输入的文件名
file_name = input("请输入您要下载的文件对应的名字:")
# 对字符串进行编码
file_name_data = file_name.encode("gbk")
# 发送下载文件的请求信息
tcp_client_socket.send(file_name_data)
# 定义二进制空的数据
result_file_data = b""
# 循环接收数据
while True:
# 获取服务端发送的文件二进制数据
file_data = tcp_client_socket.recv(1024)
if file_data:
# 拼接每次读取的数据
result_file_data += file_data
else:
break
# 判断文件是否有数据
if result_file_data:
# 写入到指定文件里面, with open 文件操作完成以后关闭文件是系统自己操作的
with open("/home/python/Desktop/" + file_name, "wb") as file:
file.write(result_file_data)
else:
print("文件为空")
# 关闭socket
tcp_client_socket.close()
服务端:
import socket
import os if __name__ == '__main__':
# 创建tcp服务端socket
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定端口号
tcp_server_socket.bind(("", 7878))
# 设置监听,把主动套接字改成被动套接字,被动套接字只能接收客户端连接请求,不能收发消息,收发消息使用新的套接字
tcp_server_socket.listen(128)
# 注意点:目前服务端是单任务的一个人下载完成以后另外一个人才能再下载
# 循环接收客户端连接请求
while True:
# 等待接收客户端的连接请求
tcp_service_socket, ip_port = tcp_server_socket.accept()
print(ip_port)
# 接收客户端的请求信息,其实文件名
file_name_data = tcp_service_socket.recv(1024)
# 对二进制数据进行解码获取文件名字符串
file_name = file_name_data.decode("gbk")
# "路径/" + file_name 判断指定路径是否有对应的文件
# file_name在当前工程判断该文件是否存在
if os.path.exists(file_name):
# 打开指定文件把数据发送给客户端
with open(file_name, "rb") as file:
while True:
# 读取文件中的数据
file_data = file.read(1024)
# 判断数据是否为空
if file_data:
# 发送数据给客户端
tcp_service_socket.send(file_data)
else:
break
print(file_name, ip_port)
# 和客户端终止服务
tcp_service_socket.close()
# 关闭服务端套接字,以后不再接收客户端的连接请求
tcp_server_socket.close()
tcp文件下载客户端+服务端的更多相关文章
- QTcpSocket-Qt使用Tcp通讯实现服务端和客户端
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QTcpSocket-Qt使用Tcp通讯实现服务端和客户端 本文地址:https:// ...
- [并发并行]_[线程模型]_[Pthread线程使用模型之三 客户端/服务端模型(Client/Server]
Pthread线程使用模型之三 客户端/服务端模型(Client/Server) 场景 1.在客户端/服务端模型时,客户端向服务端请求一些数据集的操作. 服务端执行执行操作独立的(多进程或跨网络)– ...
- win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结
win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结 一:前提 注意:现在有两种安装的方式 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(3 ...
- 利用TCP 客户端---->服务端 传送文件到指定路径,并返回一个友好的回馈
首先盲写的一个传输文件的方法,但测试发现了一个非常不容易发现的问题,这里先说明一下. 错误的代码如下: package com.TCP.java; import java.io.File; impor ...
- UDP广播 与 TCP客户端 --服务端
随着倒计时的响声,自觉无心工作,只想为祖国庆生. 最近有遇到过这样一个问题,将摄像头识别的行人,车辆实时显示在客户端中.有提供接口,会以Json的数据的形式将实时将识别的对象进行Post提交.所以我们 ...
- 基于TCP的socket套接字的网络编程(客户端/服务端模式)
于数据完整性要求较高的场合,就应采用TCP协议. IP网络层提供IP寻址和路由.因为在网络上数据可以经由多条线路到达目的地,网络层负责找出最佳的传输线路. IP地址与数据包: IP层就是把数据分组从一 ...
- TCP中的服务端与客户端的实现
TCP中首先要在服务端开启监听,这样才可以从客户端链接 using System; using System.Collections.Generic; using System.Linq; using ...
- Python后端(一)——客户端/服务端
网址组成(四部分) 协议 http, https(https 是加密的http) 主机 g.cn zhihu.com之类的网址 ,因此一般不用填写 路径 下面的「/」和「 ...
- Winfrom 基于TCP的Socket服务端 多线程(进阶版)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
随机推荐
- C#:新邮件监听及搜索
在项目中,我们需要监听邮件服务器,看是否有新的邮件进入.下面的代码可以帮助我们监听新邮件,并对已有的邮件进行查找: using System; using System.Collections.Gen ...
- IT方面书籍下载整理
最近翻看Redis相关的中文书籍时,发现了很多错误,包括翻译错误及理论错误,因此想搜集一些相关的外文书籍看看.以下几个链接,内容大同小异,均可免费下载相关的英文书籍PDF版,内容涵盖了IT的方方面面. ...
- 记一次失败的Linux安装
这次把整个电脑都装了Ubuntu,向Linux这条路越走越远了,也感谢社会对Linux的支持越来越完善了,才让我下定这个决心,再次表示感谢 之前都是装双系统或者在vm下安装的Linux,现在再装一次, ...
- 微信小程序全选多选效果
效果图: 代码: wxml <view class='hei_top'> <view class='hei_p'>共 <text>4</text> 场& ...
- spring整合web的ssh(springMVC、hibernate)
1. tomcat启动时,加载配置文件,将bean装在 导入jar包spring-web..jar 2.确定配置文件位置 3.spring整合hibernate <!-- 加载hibernate ...
- pdf word excel ppt 在线预览方案收集
https://www.idocv.com/docs.html http://www.cnblogs.com/wolf-sun/p/3569960.html http://coolwanglu.git ...
- vueHistory 模式下,布置到服务器上路由刷新会报nginx404错误
之前写完vue项目后,布置到服务器,用nginx反向代理后,一开始进去,进各种路由都是没问题的,但是一旦f5刷新后就会出现一个nginx404的错误. 经过翻阅vue文档后,发现这是vueHistor ...
- svg用作背景图
svg用做背景图的几种方式 1. 直接使用 background: url('data:image/svg+xml;charset=utf-8,<svg width="10" ...
- >>我要做特工系列 之 CSS 3_animation_向右滑出后下滑并停止
新手入门还没有正式发点啥东西,都是在装潢博客这个家了,到现在为止还是没有装修好..熟悉了这边的发布规范之后会持续在这里记录,给自己留下学习的脚印~ 这正式的第一篇随笔写个使用css3的动画效果. 总感 ...
- 关于修改test9ui布局的一些小笔记
今早,上IT修真园里,看到师兄大娃很负责任的将我任务里的项目的排版,3,6,7的列了出来. 谢谢师兄,那么负责任的照看师弟. 言归正传,我一开始,直接按照师兄的指示,选择性的优先修改底部.效果也达到了 ...