创建两个文件tcp_client.py客户端 tcp_server.py服务端
1,首先启动服务端在启动客户端
2,如果出现端口被占用更改下端口(大于1024都行)
tcp_client.py:
import socket
def main():
# 创建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 链接服务器
tcp_socket.connect(("192.168.11.60", 8988))
# 获取下载文件名
file_name = input("输入下载文件名:")
# 将文件名上传到服务器
tcp_socket.send(file_name.encode("utf-8"))
# 接收文件中的数据
data = tcp_socket.recv(1024)
# 保存文件到文件夹
if data:
with open("[新]"+file_name, "wb")as f:
f.write(data)
# 关闭套接字
tcp_socket.close()
if __name__ == '__main__':
main()
tcp_server.py
from socket import *
def main():
# 创建套接字
tcp_socket = socket(AF_INET, SOCK_STREAM)
# 绑定本地信息 bing
tcp_socket.bind(("", 8988))
# 默认套接字 listen
tcp_socket.listen(128)
while True:
# 等待连接 accept
new_tcp_socket, user_addr = tcp_socket.accept() # 产生新的套接字 客户端信息
# 接收客户端发过来的信息
file_name = new_tcp_socket.recv(1024).decode("utf-8")
print("客户端%s需要下载的文件是%s" % (str(user_addr), file_name))
file_content = None
try:
f = open(file_name, "rb")
file_content = f.read()
f.close()
except Exception as ret:
print("没有要下载的文件%s" % file_name)
if file_content:
new_tcp_socket.send(file_content)
new_tcp_socket.close()
tcp_socket.close()
if __name__ == '__main__':
main()
结果: