代码讲解:

server

 import socket

 def send_file_client(new_client_socket, new_client_addr):
# 接收客户端需要下载的文件名
file_name = new_client_socket.recv(1024).decode('gbk')
print('客户端' + str(new_client_addr) + '需要下载的文件是: ' + file_name)
# 打开文件读取数据
file_data = None
try:
file = open(file_name, 'rb')
file_data = file.read()
file.close()
except:
print('没有要下载的文件' + file_name)
if file_data:
new_client_socket.send(file_data) def main():
# 创建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器ip和port
local_addr = ('', 8000)
tcp_socket.bind(local_addr)
# 监听
tcp_socket.listen(128)
print('等待客户端接入...')
# 等待客户端接入
new_client_socket, new_client_addr = tcp_socket.accept()
print(str(new_client_addr) + ': ' + '接入...')
# 调用函数发送数据给客户端
send_file_client(new_client_socket, new_client_addr)
# 关闭套接字
new_client_socket.close()
tcp_socket.close() if __name__ == '__main__':
main()

client

 import socket

 def main():
# 创建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 服务器ip和port
server_ip = input('服务器ip: ') # 192.168.6.206
server_port = int(input('服务器port: '))
# 链接服务器
tcp_socket.connect((server_ip, server_port))
# 需要下载的文件
download_file_name = input('需要下载的文件名: ')
# 发送文件名
tcp_socket.send(download_file_name.encode('gbk'))
# 接收文件
recv_data = tcp_socket.recv(1024*1024)
if recv_data:
with open(download_file_name, 'wb') as file:
file.write(recv_data)
else:
print('没有该文件')
# 关闭套接字
tcp_socket.close() if __name__ == '__main__':
main()

注意:该程序仅能发送文本文件,其他类型请自己更改代码

tcp客户端从服务器下载文本文件的更多相关文章

  1. [JAVA] Tcp客户端和服务器简单代码

    服务器: import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; im ...

  2. Java实验四 TCP客户端和服务器的应用

    实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全 4.对通信内容进行摘要计算并验证 实验步骤 1.信息安全传送: 发送方A——————>接收方B A加密时,用B ...

  3. WCF客户端从服务器下载数据

    1.打开VS选择控制台项目新建一个解决方案Server,然后添加两个类库Contract和Service. 2.在Contract中添加一个接口IFileDownload using System; ...

  4. TCP客户端和服务器间传输数据遇到的TypeError: a bytes-like object is required, not 'str'问题

    使用python实现python核心编程3第472页和474页的TCP时间戳服务器和客户端服务器间数据传输编程时遇到TypeError: a bytes-like object is required ...

  5. Socket TCP客户端和服务器的实现

    import java.io.*; import java.net.Inet4Address; import java.net.InetSocketAddress; import java.net.S ...

  6. TCP客户端与服务器的实现

    为了更容易理解,我们举一个小例子来说明服务器与客户端之间的连接过程. 有一个饭店,饭店里有服务员,服务员用于招待客人 特别要注意的是:要记住相关函数的各个参数都是什么,什么时候返回SOCKET_ERR ...

  7. 基于Qt的tcp客户端和服务器实现摄像头帧数据处理(客户端部分)

    项目简述 实现客户端调用摄像头,并以帧的形式将每一帧传输到服务端,服务端将图片进行某些处理后再返回给客户端.(客户端与服务端通信代码部分参考<Qt5 开发及实例>) 项目步骤 客户端的编写 ...

  8. --系统编程-网络-tcp客户端服务器编程模型、socket、htons、inet_ntop等各API详解、使用telnet测试基本服务器功能

    PART1 基础知识 1. 字节序 网络字节序是大端字节序(低地址存放更高位的字节), 所以,对于字节序为小端的机器需要收发网络数据的场景,要对这些数据进行字节序转换. 字节序转换函数,常用的有四个: ...

  9. unp TCP 客户端服务器回射程序中对SIGCHLD信号的处理

    第五章中,有一个例子模拟客户端并发的终止TCP连接,服务器捕捉并处理SIGCHLD信号并调用waitpid函数防止僵死进程的出现.信号处理函数中核心的一句是: , &statloc, WNOH ...

随机推荐

  1. oracle11g和12c区别

    11g和12c 1.12c使用更为强大的sql执行与优化算法 2.oracle在12c完全使用云和可插拔数据库概念 3.oracle 12c的RAC使用flex(让rg直接化) 模式,让rg管理更加细 ...

  2. python day01练习和作业

    习题:1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型编译型语言:优点:执行速度快 缺点:维护成本高,跨平台性差解释型语言:优点:维护成本低,跨平台性好 缺点:执 ...

  3. Lighthouse

    北大程郁缀教授: 一,"日月之行,若出其中,星汉灿烂,若出其里."要找机会去感受大海,男人要有大海一样的胸怀,大气者方能成大器. 二,"亦余心之所善兮,虽九死其而未悔.& ...

  4. session的属性设置

    2.       session的属性设置 先看案例: 登陆页面: <%@page contentType="text/html;charset=gb2312"%> & ...

  5. 斐波那契数列(php实现)

    描述 斐波那契数列指的是这样一个数列:1.1.2.3.5.8.13.21.34... 规则 : 有N个数,第i个数的值 N(i)= N(i-1) + N(i-2) 需求: 给出下标i ,求第i 的个数 ...

  6. javascript 防止多次提交或执行(在规定时间段内只允许执行一次) 默认 3000ms

    "use strict" class Func{ constructor(){} isRun(id, time){//防止多次提交或执行(在规定时间段内只允许执行一次) 默认 30 ...

  7. 使用DIV实现页面的遮罩效果

    Div实现页面的遮罩 之前没动手搞过,项目有个需求刚好可以用到,就想着去试下,结果发现自己都理解的有问题了. 遮罩的实现是使用opacity或者IE下的filter滤镜来设置透明度的,而且一个div必 ...

  8. pytorch之 classification

    import torch import torch.nn.functional as F import matplotlib.pyplot as plt # torch.manual_seed(1) ...

  9. ubuntu14.04安装mysql5.6.37

    摘抄这篇文档是为了记录自己的日常学习情况,方便以后查看.后边注明了来源,如有不对的地方,希望大家指正,谢谢! 首先从mysql官网上下载所需的离线包,我现在的版本是(mysql-5.6.37-linu ...

  10. 注销Apache

    到D:\phpTools\Apache24\bin下运行cmd 输入httpd.exe -k uninstall -n apache24 回车后提示注销完成 接着把Apache的文件删了即可