我已经实现了一个 Android 应用程序,它使用 SP 相机拍照并通过套接字将其发送到服务器。
我正在使用以下(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
? - 我发送图像或读取图像的代码不正确吗?
提前感谢您的任何帮助,因为我真的被卡住了!