我目前正在做一个与Raspberry Pi zero w一起工作的项目,该服务器用作服务器,拍摄照片并将其通过套接字发送到客户端的Android Studio中的移动应用程序。之前,我曾进行过将图像从一个手机发送到另一台手机的测试,并且可以正常工作,但是现在我正尝试使用Python从服务器发送图像,而在Android Studio中,会出现以下错误:Invalid stream header: FFD8FFE1
import io
import socket
import picamera
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Sockek created...")
server_socket.bind(('', 8000))
server_socket.listen(2)
print("Server listening...")
with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_preview()
connection,addr = server_socket.accept()
print("Connected to:"+addr[0]+":"+ str(addr[1]))
try:
stream = io.BytesIO()
camera.capture(stream, 'jpeg')
stream.seek(0)
connection.send(stream.read())
stream.seek(0)
stream.truncate()
finally:
connection.close()
server_socket.close()
camera.stop_preview()
print("Connection closed")
private class ClientRxThread extends Thread{
String dstAddress;
int dstPort;
byte[] data;
ClientRxThread(String address, int port){
dstAddress=address;
dstPort = port;
}
public void run(){
Socket socket = null;
Uri uri = null;
try {
socket = new Socket(dstAddress, dstPort);
File file = new File(Environment.getExternalStorageDirectory(),
"Image.jpg");
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
byte[] bytes;
FileOutputStream fos = null;
try {
bytes = (byte[])ois.readObject();
fos = new FileOutputStream(file);
fos.write(bytes);
String realPath = file.getAbsolutePath();
File f = new File(realPath);
uri =Uri.fromFile(f);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if(fos!=null){
fos.close();
}
}
socket.close();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,"Image received",Toast.LENGTH_LONG).show();
pickReader();
}
});
}catch (IOException e){
e.printStackTrace();
final String eMsg = "Something wrong: "+ e.getMessage();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,eMsg,Toast.LENGTH_LONG).show();
}
});
}finally {
if(socket!= null){
try{
socket.close();
}catch (IOException e){
Toast.makeText(MainActivity.this,"server not connected",Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}
}
}
android studio中的错误是:
java.io.StreamCorruptedException: invalid stream header: FFD8FFE1