python 이 socket 을 통 해 파일 을 보 내 는 인 스 턴 스 코드
client:
#!/usr/bin/env python
# -*-coding:utf-8 -*-
import socket, struct, json
download_dir = r'D:\Python\python_learning\gd\code\part3\02 \ \client\download'
gd_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
gd_client.connect(('127.0.0.1',8123))
while True:
#1、
cmd=input('>>: ').strip() #get a.txt
if not cmd:continue
gd_client.send(cmd.encode('utf-8'))
#2、 ,
# :
obj=gd_client.recv(4)
header_size=struct.unpack('i',obj)[0]
# :
header_bytes = gd_client.recv(header_size)
# :
header_json = header_bytes.decode('utf-8')
header_dic = json.loads(header_json)
'''
header_dic = {
'filename': filename, # 1.txt
'file_size': os.path.getsize(r'%s\%s' % (share_dir, filename)) # /1.txt
}
'''
total_size = header_dic['file_size']
file_name = header_dic['filename']
# :
with open(r'%s\%s'%(download_dir, file_name),'wb') as f:
recv_size = 0
while recv_size < total_size:
line = gd_client.recv(1024)
f.write(line)
recv_size += len(line)
print(' :%s :%s' % (total_size, recv_size))
gd_client.close()
server:
#!/usr/bin/env python
# -*-coding:utf-8 -*-
import socket
import subprocess
import struct
import json
import os
share_dir = r'D:\Python\python_learning\gd\code\part3\02 \ \server\share'
gd_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
gd_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
gd_server.bind(('127.0.0.1', 8123)) # 0-65535: 0-1024
gd_server.listen(5)
while True:
conn, client_addr = gd_server.accept()
while True: #
try:
# 1、
res = conn.recv(8096) # b'get 1.txt'
if not res: break # linux
# 2、 ,
cmds = res.decode('utf-8').split() # ['get','1.txt']
filename = cmds[1]
# 3、 ,
# :
header_dic = {
'filename': filename, # 1.txt
'file_size':os.path.getsize(r'%s\%s'%(share_dir, filename)) # /1.txt
}
header_json = json.dumps(header_dic)
header_bytes = header_json.encode('utf-8')
# :
conn.send(struct.pack('i',len(header_bytes)))
# :
conn.send(header_bytes)
# :
with open('%s/%s'%(share_dir, filename),'rb') as f:
for line in f:
conn.send(line)
except ConnectionResetError: # windows
break
conn.close()
gd_server.close()
명령 입력:get 1.txt,그리고 server 엔 드 의 share 파일 에 있 는 1.txt 파일 을 client 엔 드 의 download 폴 더 에 보 낼 수 있 습 니 다.그림,동 영상,문 자 는 모두 보 낼 수 있 습 니 다.바 이 너 리 파일 을 전송 하기 때 문 입 니 다.
원 리 는 서버 쪽 에서 파일 을 읽 는 형식 으로 열 고 클 라 이언 트 쪽 에서 쓰 는 방식 으로 파일 을 열 고 클 라 이언 트 쪽 에서 한 줄 한 줄 의 바 이 너 리 를 파일 에 기록 해서 저장 하면 된다 는 것 이다.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 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에 따라 라이센스가 부여됩니다.