2013-03-31 6 views
0

시스템간에 파일을 안전하게 전송할 수있는 응용 프로그램을 만들었습니다 ... 수신 완료시를 제외하고 모두 정상적으로 작동합니다. 그것은 라인의 서버 측 여기 예외 : java.lang.ClassCastException : [B를 java.io.ObjectStreamClass로 캐스팅 할 수 없습니다.

output1.writeObject(security.encrypt(new String(buf,"ISO-8859-1"))); 

는 보안 등급이 가지고있는 예외

String bb = security.decrypt((int[][]) input1.readObject()); 
byte[] buf = bb.getBytes("ISO-8859-1"); 

이다 발생한에서

Exception in thread "New Connection" java.lang.ClassCastException: [B cannot be cast to java.io.ObjectStreamClass 
at java.io.ObjectInputStream.readClassDesc(Unknown Source) 
at java.io.ObjectInputStream.readArray(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.readArray(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.readObject(Unknown Source) 
at network.FileDownload.secureFileReceive(FileDownload.java:341) 
at network.FileDownload.run(FileDownload.java:240) 
at java.lang.Thread.run(Unknown Source) 

클라이언트 측 프로그램 (하면 FileDownload) 라인을 나타낸다 security.encrypt()이 String을 취하고 int [] []를 반환하는 암호화 n 암호 해독 방법입니다. security.decrypt 그 반대의 경우도 마찬가지입니다. 도와주세요. 나에게

+0

'output1' 객체의 유형은 무엇입니까? –

+0

ObjectOutputStream –

+1

왜 이것을 int [] []로 변환하려고합니까? 당신은 starlight away 같은 것을 output1.writeObject (security.encrypt (new String (buf, "ISO-8859-1")))라고 부르지 않습니까? – Lokesh

답변

2

솔기, 즉 서버 측 writeObject에, 그래서 보낼 수있는, 다음의 과정은 (int[][]) 시스템과 클라이언트 측에서 객체를 캐스팅 할수 없어 object의 어떤 종류로 int[][] 캐스트 변환 그것을하는 방법을 모른다 ...

나는 당신이 필요로하는 것이 양쪽에 객체 직렬화기를 필요로한다.

행운을 빌어 요 ... 당신이 몸을 통해 서버에서 보내는 것을

+1

ObjectInputStream과 ObjectOutputStream은 동일합니다 –

+0

정수가 기본 유형이 아니므로 int 대신 Integer로 시도해보십시오. 또한 캐스팅 대신 새로운 Integer (객체)가 도움이되기를 바랍니다. – saykou

+0

젠체하는 int 값이 아닌 Integer 객체를 만들 것입니다 .... security.decrypt()에 의해 예상되는 ... –

0

확인합니다. 해당 본문에 잘못된 문자가 포함되어 있습니다. 그게 당신이 캐스트 exact.I 점점 그날 내가 메시지 본문을 변경 해결 동일한 문제가 붙어있다.