Попытка создать сервер на Java, который отправляет изображение на мое устройство Android с помощью сокетов - PullRequest
0 голосов
/ 16 мая 2011

Я пытаюсь отправить изображение с помощью сервера Java на мое устройство Android, но оно не работает, и я не знаю, почему.

Код для сервера:

public class Main {

public static void main(String argv[]) throws Exception 
{ 


  ServerSocket welcomeSocket = new ServerSocket(6789); 
  Image image = null;




  while(true) { 

       Socket connectionSocket = welcomeSocket.accept(); 

       BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 

       ObjectOutputStream  outToClient = new ObjectOutputStream(connectionSocket.getOutputStream()); 



       File f = new File("/resources/image.png");
       image = ImageIO.read(f);

       outToClient.writeObject( new ImageIcon(""+image) );


    } 
} 


}

Я думаю, что проблема в сервере, потому что приложение Android работает с другим сервером

клиент:

BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in)); 

DataInputStream in;

BufferedInputStream buf;

DataInputStream mod ; 

Socket sc = new Socket(myIP,48000);

DataInputStream infromServer = new DataInputStream(sc.getInputStream());

mod =  infromServer;

Bitmap mPhotoPicture = BitmapFactory.decodeStream(modifiedSentence);

imagen.setImageBitmap((mPhotoPicture));

1 Ответ

0 голосов
/ 16 мая 2011

Другой сервер, вероятно, отправляет необработанные данные изображения (не сериализованный объект ImageIcon). Похоже, BitmapFactory ожидает необработанные байты изображения. Попробуйте записать необработанные байты в ваш сокет:

FileInputStream fis = null;
int size = (int)f.length();
byte[] bytes = new byte[size];
fis = new FileInputStream( f );
int read = fis.read( bytes );

connectionSocket.getOutputStream().write( bytes );
connectionSocket.getOutputStream().flush();

Очевидно, что вам нужно добавить обнаружение и обработку ошибок, чтобы сделать это устойчивым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...