客户端
import socket
def main():
# 1. 创建socket
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 连接服务器
server_address = ('127.0.0.1', 7890)
tcp_client_socket.connect(server_address)
# 3. 发送文件名字
download_file_name = input('想要下载的文件名:')
tcp_client_socket.send(bytes(download_file_name, 'utf8'))
# 4. 接收服务器返回的文件数据
file_content = tcp_client_socket.recv(1024)
# 5. 保存接收到的数据到文件中
if file_content:
with open('[接收]'+download_file_name,'wb') as f:
f.write(file_content)
# 6. 关闭socket
tcp_client_socket.close()
if __name__ == "__main__":
main()
服务器
import socket
def get_file_content(file_name):
file_content = None
try:
f = open(file_name,'rb')
file_content = f.read()
f.close()
except Exception as e:
print('文件没有找到')
return file_content
def main():
# 1. 创建socket
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 绑定地址
tcp_server_socket.bind(('', 7890))
# 3. 监听
tcp_server_socket.listen(128)
while True:
# 4. 等待请求
new_client_socket, client_address = tcp_server_socket.accept()
# 5. 接收客户端要下载的文件名
file_name = new_client_socket.recv(1024)
file_name = str(file_name, 'utf8')
print('客户端要下载的文件是 %s' %file_name)
# 6. 打开文件读取文件内容
file_content = get_file_content(file_name)
# 7. 发送文件内容给客户端
if file_content:
new_client_socket.send(file_content)
# 6. 关闭socket
new_client_socket.close()
tcp_server_socket.close()
if __name__ == "__main__":
main()