客户端代码:
# -*- coding:utf-8 -*-
import socket
import os
def check_file(f):
if os.path.exists("/home/ubuntu/Desktop/"+f):
print("下载成功!")
else:
print("下载失败!")
def main():
# 创建客户端套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接本地ip和端口号
tcp_socket.connect(("192.168.220.137", 10086))
file_name = input("请输入要下载的文件名字:")
# 将文件名发送给服务器端
tcp_socket.send(file_name.encode("utf-8"))
# 客户端接收不超过1mb的数据
recv_data = tcp_socket.recv(1024*1024)
new_file_name = "[Download]" + file_name
# 如果服务器返回的数据不为空则创建新的文件接收服务器返回的数据
if recv_data:
with open(new_file_name, "wb") as f:
f.write(recv_data)
check_file(new_file_name)
# 关闭客户端套接字
tcp_socket.close()
print("服务器连接已关闭")
if __name__ == "__main__":
main()
·
·
服务器端代码:
# -*- coding:utf-8 -*-
import socket
import time
def handle_data(new_client_socket):
# 处理服务器收到的数据
# 接收服务器收到的数据,最大为1mb
recv_data = new_client_socket.recv(1024*1024)
print("服务器正在寻找{}, 请稍候...".format(recv_data.decode("utf-8")))
time.sleep(2)
# 查看本地是否存在该文件,存在的话将内容发送给客户端
try:
f = open(recv_data, "rb")
content = f.read()
f.close()
new_client_socket.send(content)
except Exception as ret:
print("{}文件不存在".format(recv_data.decode("utf-8")))
# 创建的新套接字关闭
new_client_socket.close()
def main():
# 创建服务器套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 服务器绑定本地ip和端口号
tcp_socket.bind(("", 10086))
# 改服务器套接字主动为被动
tcp_socket.listen(128)
print("{:*^50}".format("服务器已打开!"))
while True:
print("正在等待客户端连接...")
# 监听客户端对服务器的连接
new_client_socket, client_addr = tcp_socket.accept()
print("连接成功!")
handle_data(new_client_socket)
# 关闭服务器套接字
tcp_socket.close()
if __name__ == "__main__":
main()
·
·
·
实验结果: