Socketserver 를 이용 하여 간단 한 파일 업로드 실현
server.py
#!/usr/bin/env python
#coding:utf-8
import SocketServer
import os
class MyServer(SocketServer.BaseRequestHandler):
def handle(self):
base_path = 'C:/temp'
conn = self.request
print 'connected...'
while True:
pre_data = conn.recv(1024)
# 、 、
cmd,file_name,file_size = pre_data.split('|')
#
recv_size = 0
#
file_dir = os.path.join(base_path,file_name)
f = file(file_dir,'wb')
Flag = True
while Flag:
# ,
if int(file_size)>recv_size:
# 1024, 1024
data = conn.recv(1024)
recv_size+=len(data)
# ,
else:
recv_size = 0
Flag = False
continue
#
f.write(data)
print 'upload successed.'
f.close()
if __name__ == '__main__':
instance = SocketServer.ThreadingTCPServer(('127.0.0.1',9999),MyServer)
instance.serve_forever()
client.py
#!/usr/bin/env python
# coding:utf-8
__author__ = 'aolens'
import socket
import sys
import os
ip_port = ('127.0.0.1',9999)
s = socket.socket()
s.connect(ip_port)
container = {'key':'','data':''}
while True:
input = raw_input('path:')
cmd,path = input.split('|')
file_name = os.path.basename(path)
file_size=os.stat(path).st_size
s.send(cmd+"|"+file_name+'|'+str(file_size))
send_size = 0
f= file(path,'rb')
Flag = True
while Flag:
if send_size + 1024 >file_size:
data = f.read(file_size-send_size)
Flag = False
else:
data = f.read(1024)
send_size+=1024
s.send(data)
f.close()
s.close()
클 라 이언 트 출력 path 의 형식 은: 방법 | 경로
path:PUT|C:/oem8.log
업로드 파일 경로 보기
C:/temp
에서 하나 oem8.log
파일 이 있 는 것 을 발 견 했 습 니 다. 업로드 에 성 공 했 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.