Python day08_TCPファイルダウンロード
2615 ワード
tcp小試行ファイルダウンロード器
クライアントがwindowsの下のpycharmで書かれていることをリアルにシミュレートするために、サービス側はubuntuの下のpycharmで書かれています.
クライアント
サービス側
クライアントがwindowsの下のpycharmで書かれていることをリアルにシミュレートするために、サービス側はubuntuの下のpycharmで書かれています.
クライアント
import socket
if __name__ == '__main__':
# tcpsocket
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#
tcp_client_socket.connect(("192.168.36.111", 8989))
#
file_name = input(" :")
#
file_data = file_name.encode("gbk")
#
tcp_client_socket.send(file_data)
with open("/home/python/Desktop/" + file_name, "wb") as file:
#
while True:
#
file_data = tcp_client_socket.recv(1024)
if file_data:
#
file.write(file_data)
else:
# ,
break
# socket
tcp_client_socket.close()
サービス側
import socket
import os
if __name__ == '__main__':
# tcp socket
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# socket
# 1. SOL_SOCKET: socket
# 2. SO_REUSEADDR:
# 3. True:
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
#
tcp_server_socket.bind(("", 8989))
# , ,
tcp_server_socket.listen(128)
# : ,
#
while True:
#
service_client_socket, ip_port = tcp_server_socket.accept()
print(ip_port)
# ,
file_name_data = service_client_socket.recv(1024)
#
file_name = file_name_data.decode("gbk")
print(file_name)
# file = open(file_name, "rb")
# 1.
if os.path.exists(file_name):
# ,
# file:
with open(file_name, "rb") as file:
while True:
#
file_data = file.read(1024)
if file_data:
# ,
service_client_socket.send(file_data)
else:
# ,
break
else:
print(" ")
service_client_socket.close()
tcp_server_socket.close()