Ive는 뭔가를 발견 할 수 없습니다. 서버에서 클라이언트로 문자열 [] 메시지를 보내지 만 이미지를 보내고 싶습니다. 문제는 클라이언트 파트의 객체를 검사하는 것이고, 바이트 []가 아니라 객체가 도착할 때 이미지를 처리하는 데 문제가 있다는 것입니다. 두 문자열 []와 [] 바이트 것은 어떤 조언이 좋은 것, 메신저 손실을 처리 할 수 이미지 보내기 ObjectOutputStream
public void run()
{
while(active)
{
try
{
Object o;
o = input.readObject();
System.out.println("Received from server!");
if (o instanceof String[])
{
String[] names = (String[]) o;
Refresh.getInstance().update(names);
}
}
catch (OptionalDataException e) { e.printStackTrace(); Terminate(); }
catch (ClassNotFoundException e) { e.printStackTrace(); Terminate(); }
catch (IOException e) { e.printStackTrace(); Terminate(); }
}
}
하지만 지금 내가 원하는 스트림 :
지금 난 내 입력 문자열 []에 대해 이것을 사용 :(
나는 이런 식으로 뭔가 싶은 :
if (o instanceof byte[])
{
// ...
}
을하지만, 이미지 파일이 올 때 = input.readObject은() 나에게이 있습니다 O를 문제 이후 나던 :
12-05 23 : 00 : 20.255 : 쓰기 바이트 교류
코드 : java.io.StreamCorruptedException가 : 잘못된 형식/System.err에 (16157) W
FileInputStream fis = new FileInputStream("images\\test.jpg");
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
ObjectOutputStream oos = new ObjectOutputStream(serverSocket.getOutputStream()) ;
oos.writeObject(buffer);
바이트를 쓰는데 무엇을 사용합니까? 쓰기 (바이트)가 아닌 writeObject (바이트)를 사용해야합니다. –
writeObject를 사용합니다. –
다음은 제 박스에서 작동합니다 : http://pastebin.com/xP2T0Ux2. 당신이 데이터를 쓰는 방식에 뭔가 잘못된 것이 있어야합니다. 문제를 재현하는 SSCCE를 게시하십시오. –