SP カメラで写真を撮り、ソケット経由でサーバーに送信する Android アプリケーションを実装しました。
次の (JAVA) コードを使用して、ローカルに保存されている画像ファイルを読み取り、ソケットを介して連続したチャンクで送信しています。
FileInputStream fileInputStream = new FileInputStream( "my_image_file_path" );
int nRead;
byte[] data = new byte[16384];
try {
while( (nRead = fileInputStream.read(data, 0, data.length)) != -1 ){
networkOutputStream.write( data, 0, nRead );
}
} catch( IOException e ){
e.printStackTrace();
}
fileInputStream.close();
そして、それを読み取ってサーバーに保存するための次の (C/C++) コード:
char newbuffer[MAX_BUF_SIZE];
int checkOperation;
ofstream outfile( "image_file_path".c_str(), ofstream::binary );
do{
checkOperation = read( clientSocketDescriptor, newbuffer, sizeof(newbuffer) );
if( checkOperation < 0 ){
cout << "Error in recv() function, received bytes = " << checkOperation << endl;
exit(1);
}else if (checkOperation != 0 ){
/*
* some data was read
*/
cout << endl << "READ Bytes: " << checkOperation << endl;
outfile.write( newbuffer, checkOperation );
/*
* emptying buffer for new incoming data
*/
for(int i = 0; i < sizeof(newbuffer); i++){
newbuffer[i] = 0;
}
}
}while( checkOperation =! 0 );
outfile.close();
Android クライアント アプリケーションは、ソケット内のすべてのバイトを正しく書き込み、while
ループから正常に終了したようです。
while
ただし、サーバー コードはループの最後の反復でスタックし、実行を継続できません。
- サーバーが を読み取れないのはなぜ
EOF
ですか? - 画像を送信したり読み取ったりするためのコードが正しくありませんか?
私は本当に立ち往生しているので、どんな種類の助けにも感謝します!