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 ...
随机推荐
- ubuntu使用ppa源安装最新版本的git
国内也有ubuntu镜像源.但是里面的git都是1.9版本.最新的已经是2.3了 1 首先使用将ppa源加入Ubuntu,交大家 sudo add-apt-repository ppa:pdoes/p ...
- 解决navicate 连接mysql数据库中文乱码的问题
以下均是ubuntu12.04为准 1.修改mysql的配置文件. 1.1.vi /etc/mysql/my.conf找到[client]在其下面添加 default-character-set=u ...
- linux命令strings
linux命令strings,其man信息如下:strings(1) GNU Development Tools ...
- 装配bean,基于xml
一.bean的实例化方式 1.默认构造 <bean id="" class=""></bean> 必须提供默认构造方法 2.静态工厂 用 ...
- webpack中package.json中的Script
初始化项目 cnpm init -y ,会自动生成一个package.json文件:主要是显示项目的名称.版本.作者.协议等信息 在package.json中scripts中配置:(运行简化) 开发模 ...
- 北航oo作业第一单元小结
前言 在经过了三次艰辛的oo作业后,oo课程的第一单元告一段落,这一单元,我作为一个oo小白,开始了解oo的编程思想,也有了自己的一点心得体会.把笔粗成字,不当之处,还请各位大佬多多指教. 一.分析程 ...
- Swift UI开发初探 (转)
原文地址:http://www.tairan.com/archives/6600 关于Swift语法,可以参考<Apple Swift编程语言入门教程> 效果如下: 开发环境 Xcode6 ...
- CF1096C Polygon for the Angle
思路: 要想到正n边形中所有可能的ang为180 * k / n (1 <= k <= n - 2). 根据n = 180 * k / ang, n是大于等于3的整数,并且n >= ...
- datatables之翻页、搜索、排序事件
$(document).ready(function() { $('#table').on('order.dt', function() { console.log('排序'); }).on('sea ...
- 也谈ThreadLocal
欢迎赐教博客地址(http://www.cnblogs.com/shizhongtao/p/5358411.html) 对于ThreadLocal使用,网上一堆一堆的.什么内存泄露,什么线程不安全.这 ...