2011-05-16 4 views
0

Java 서버를 사용하여 이미지를 Android 장치에 보내려고하는데 작동하지 않고 그 이유를 모르겠습니다.소켓을 사용하여 Android 장치로 이미지를 전송하는 Java 서버를 만들려고합니다.

는 서버의 코드는

입니다 :

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)); 
+0

두 서버에서 보낸 데이터를 비교할 수 있습니까? (당신과 다른 사람). 일부 상위 전송 계층을 사용하지 않아야 할 이유가 있습니까? 말하자면, http? – Mauricio

답변

0

다른 서버 :

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)); 


    } 
} 


} 

나는 안드로이드 앱이 다른 서버

클라이언트와 함께 작동하기 때문에 문제가 서버에 생각 아마 미가공 이미지 데이터 (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(); 

분명히,이 기능을 사용하려면 오류 감지 및 처리를 추가해야합니다.

+0

저는이 코드를 처음 접했고 코드를 넣었습니다. 작동하지 않습니다. – Dgenoves

+0

어떻게 작동하지 않습니까? 컴파일되지 않거나 제대로 작동하지 않습니까? – sarumont

+0

제대로 작동하지 않거나 일부 문제가 생길 수 있습니다. 당신이 내게 litle을 안내 할 수 있다면 – Dgenoves

관련 문제