服务端:
import socket
def read_file(file_name):
f = open(file_name, 'rb')
file_data = f.read()
f.close()
return file_name
def main():
# 1.创建socket套接字
tcp_socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.绑定端口
tcp_socket_server.bind(('', 8089))
# 3.添加监听,等待客户端连接
tcp_socket_server.listen()
# 4.与客户端创建新的连接
new_tcp_socket, tcp_socket_add = tcp_socket_server.accept()
# 5.接收客户端发来的文件名
file_name = new_tcp_socket.recv(1024)
# 6.把文件内容传给客户端
data = read_file(file_name)
new_tcp_socket.send(data)
# 7.关闭套接字
new_tcp_socket.close()
tcp_socket_server.close()
if __name__ == '__main__':
main()
客户端:
import socket
def main():
# 1.创建tcp套接字
tcp_socket_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.连接服务器
tcp_socket_client.connect(('ip地址', 8089))
# 3.发送要下载的文件名
file_name = input('请输入要下载的文件名字: ')
# 4.将文件名传发送给服务器
tcp_socket_client.send(file_name.decode('utf-8'))
# 5.接收文件中的数据内容
recv_data = tcp_socket_client.recv()
# 6.将接收到的数据写入本地文件
with open(file_name + '[新]', 'wb') as f:
f.write(recv_data)
# 7.关闭套接字
tcp_socket_client.close()
if __name__ == '__main__':
main()