어떻게 python socket 모듈 을 사용 하여 간단 한 파일 다운 로드 를 실현 합 니까?
# ftp server
import socket, os, time
server = socket.socket()
server.bind(("localhost", 8080))
server.listen()
while True:
conn, addr = server.accept()
print(" :", addr)
while True:
try: # windows ,
data = conn.recv(1024)
if not data:
print(" ")
break
except Exception as e:
print(" ")
break
cmd, filename = data.decode().split() # ex: get name.txt
if os.path.isfile(filename):
f = open(filename, "rb")
#
size = os.stat(filename).st_size
conn.send(str(size).encode()) #
conn.recv(1024)
for line in f: #
conn.send(line)
f.close()
print(" ")
conn.send("not file".encode())
server.close()
클 라 이언 트 쪽:
import socket
client = socket.socket()
client.connect(("localhost", 8080))
while True:
cmd = input(">>:").strip()
if len(cmd)==0: continue
if cmd.startswith("get"):
client.send(cmd.encode()) #
server_response = client.recv(1024)
if server_response.decode().startswith("not"):
print(" ")
continue
client.send(b"ready to recv file") #
file_size = int(server_response.decode()) #
rece_size=0
filename = cmd.split()[1]
f = open(filename + ".new", "wb")
while rece_size < file_size:
if file_size - rece_size > 1024: #
size = 1024
else: # , ,
size = file_size - rece_size
print("last receive:", size)
recv_data = client.recv(size)
rece_size += len(recv_data) #
f.write(recv_data) # ,
else:
print(" ")
f.close()
client.close()
테스트 사례:이상 은 python socket 모듈 을 어떻게 사용 하여 간단 한 파일 다운 로드 를 실현 하 는 지 에 대한 상세 한 내용 입 니 다.python socket 파일 다운로드 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.