Androidフォンで画像を撮影し、SDカードのフォルダーに保存するプロジェクトに取り組んでいます。SD から PC の特定のフォルダーにフォルダーを定期的に移動する必要がある Python スクリプトに取り組んでいます。電話と PC はモバイル ホットスポットを介して接続されます。
PC をクライアント、モバイルをサーバーとするソケット プログラムを作成しました。しかし、私はそれにいくつかの問題に直面しています。フォルダを移動できませんでしたが、フォルダから画像を移動しようとしましたが、次の問題に直面しています
- イメージは不明なファイル形式でコピーされます。
- サーバー側でプロセスを繰り返して、フォルダーに存在するすべての画像を移動することができません
- クライアントでは、必要な場所に保存できません。画像を送信する前にサーバーからフォルダー名とファイル名を送信しようとしましたが、クライアントは送信したファイル名を取得せず、その名前のフォルダーを検索します。
- クライアントに送信される名前のサイズにも問題があります。サーバーから送信された名前に応じて、クライアント側でサイズをランダムに変更するにはどうすればよいですか。
この問題を解決するには、誰かの助けが必要です。
これがクライアント側のコードです
import socket,os
import time
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("192.168.43.1", 5005))
size = 1024
while True:
fln = client_socket.recv(size) # folder name
fn = client_socket.recv(size) # file name
fname = "E:\\Transfered\\"+fln+"\\"+fn
fp = open(fname,'w')
while True:
strng = client_socket.recv(1024)
if not strng:
break
fp.write(strng)
fp.close()
print "Data Received successfully"
exit()
#data = 'viewnior '+fname
#os.system(data)
私のサーバー側のコード
import os
import sys,time
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 5005))
server_socket.listen(5)
client_socket, address = server_socket.accept()
print "Conencted to - ",address,"\n"
sb = '/mnt/sdcard/sb'
while True:
files = os.listdir(sb)
pages = 0;
while (files):
print '\nMaybe, pending work'
for au in files:
if (au.find('d')>-1): # searching for folder with a d
os.chdir(sb+'/'+au)
imgFiles = os.listdir(sb+'/'+au)
images = [img for img in imgFiles if img.endswith('.jpg')]
print '\n%s user done' %au
client_socket.send(au)
pages = 0;
#copies all .img files in the folder from server to client
for imgs in images:
print imgs
client_socket.send(imgs)
file_name = open(imgs,'r')
while True:
strng = file_name.readline(1024)
if not strng:
break
client_socket.send(strng)
file_name.close()
print "Data sent successfully"
os.remove(sb+'/'+au+'/'+imgs)
pages = pages + 1
time.sleep(1)
os.chdir(sb)
os.rmdir(au)
else:
time.sleep(2)
exit()