import socket
def main():
# 创建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取服务器的ip port
dest_ip = input("请输入下载服务器的ip")
dest_port = int(input("请输入下载服务器的port"))
# 连接服务器
tcp_socket.connect((dest_ip, dest_port))
# 获取下载的文件名字
downloadFileName = input("请输入要下载的文件的名字:")
# 将要下载的文件名字发送到服务器
tcp_socket.send(downloadFileName.encode("utf-8"))
# 接收文件中的数据
recv_data = tcp_socket.recv(1024 * 1024)
# 如果接收到数据
if recv_data:
# 保存接收到的数据到一个文件中
with open("[新]"+downloadFileName, "wb") as f:
f.write(recv_data)
# 关闭套接字
tcp_socket.close
if __name__ == "__main__":
main()
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/DownloadFile.py
请输入下载服务器的ip192.168.29.2
请输入下载服务器的port8080
请输入要下载的文件的名字:1.py
Process finished with exit code 0
文件下载.png
接收数据.png
自己实现文件服务器端
import socket
def send_file_2_client(client_addr, new_client_socket):
# 接收客户端发过来的要下载的文件名
file_name = new_client_socket.recv(1024).decode("utf-8")
print("客户端要下载的文件是:%s" % (file_name))
file_content = None
# 打开这个文件,读取数据
try:
f = open(file_name, "rb")
file_content = f.read()
f.close()
except Exception as ret:
print("没有要下载的文件")
if file_content:
# 发送文件的数据给客户端
new_client_socket.send(file_content)
def main():
# 创建套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定本地信息
tcp_server_socket.bind(("", 8089))
# 让默认套接字主动变为被动
tcp_server_socket.listen(128)
while True:
# 等待客户端的连接
new_client_socket, client_addr = tcp_server_socket.accept()
# 调用发送文件函数,完成为客户端服务
send_file_2_client(client_addr, new_client_socket)
# 关闭套接字
new_client_socket.close()
tcp_server_socket.close()
if __name__ == "__main__":
main()
首先打开服务端
然后打开客户端请求
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/DownloadFileClient.py
请输入下载服务器的ip192.168.29.2
请输入下载服务器的port8089
请输入要下载的文件的名字:file.py
Process finished with exit code 0
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/DownloadFileServer.py
客户端要下载的文件是:file.py
客户端修改.png
网友评论