TCP客户端与服务端 文件下载:
'''TCP客户端
创建套接字
绑定 连接服务器
要下载的文件名称
发送文件下载的请求
接收服务端发送过来的数据
保存文件
关闭套接字
'''
import socket
def main():
# 创建Tcp套接字
tcp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_ip = input("server ip:")
server_port = int(input("server port:"))
# 连接服务器
tcp_client_socket.connect((server_ip,server_port))
file_name = input('请输入文件名称:')
# 发送文件下载请求
tcp_client_socket.send(file_name.encode('gbk'))
# 接收下载文件
recv_data = tcp_client_socket.recv(1024*1024)
if recv_data:
# 保存文件
with open('接收'+file_name, 'wb') as f:
f.write(recv_data)
# 关闭套接字
tcp_client_socket.close()
if __name__ == '__main__':
main()
TCP服务端
TCP服务端
创建套接字
绑定信息 ip port
listen 主动变被动
accept 等待客户端的链接
发送/接收
'''
import socket
def send_file_client(new_client_socket):
# 接收客户端发送过来的数据
# file_name = new_client_socket.recv().decode()
file_name = new_client_socket.recv(1024).decode('gbk')
content = b""
try:
with open(file_name, 'rb') as f:
content = f.read()
except:
print("no download file:%s" % file_name)
new_client_socket.send(content)
new_client_socket.close()
def main():
tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_server_socket.bind(("", 7890))
tcp_server_socket.listen(128)
new_client_socket,client_addr = tcp_server_socket.accept()
# 给客户端返回文件内容 先接收再读取再返回
send_file_client(new_client_socket)
tcp_server_socket.close()
if __name__ == '__main__':
main()