Pythonソケットプログラミングで単純なサーバークライアントコードを作成しました。クライアント側は、その側のスクリーンショット(画像)を取得してサーバーに送信します。'localhost'を使用して画像を転送している場合、つまり1つのフォルダから別のフォルダに画像を転送している場合は正常に機能しますが、主な問題は画像を別のコンピュータに転送する場合に発生します...サーバー側で受信した画像が破損しています...さらにさらに私は、クライアント(送信者側の画像、つまり破損していないもの)とサーバー(受信者側の画像、つまり破損しているもの)の違いが毎回ほぼ1Kbであることを観察しました.........
クライアント(送信者)側の私のコードは-
os.system('scrot screen.bmp') #command to take screen shot
FILE = "screen.bmp"
f = open(FILE, "rb")
data = f.read()
f.close()
del f
imagesize = int(os.path.getsize('screen.bmp'))
sendsize = '%1024s' %imagesize
s.sendall(str(sendsize))
print 'length of data = ',len(data)
s.sendall(str(len(data)))
s.sendall(str(data))
およびサーバー側(受信側)---
filename='screen.bmp'
print '[Media] Starting media transfer for ',filename
os.system('rm -f screen.bmp')
f = open(filename,"wb")
expsizeimage = int(conn.recv(1024))
data1 = conn.recv(1024)
data2=''
for i in range(0,len(data1)):
if(not(data1[i]=='0' or data1[i]=='1' or data1[i]=='2' or data1[i]=='3' or data1[i]=='4' or data1[i]=='5' or data1[i]=='6' or data1[i]=='7' or data1[i]=='8' or data1[i]=='9')):
break
data2=data2+data1[i]
print '------------'+data2+'-------------'+str(m)+'----------------'
print 'size of data:' ,int(data2)
print 'the expected size of image is: ', expsizeimage
data=9
del data
sized=0;
while 1:
data = conn.recv(expsizeimage)
print 'received length of image = ',len(data)
f.write(data)
sized=sized+len(data)
print "sized------"+str(sized)
del data
if(sized>=int(data2)):
break
print "saved the screentshot data recieved"