2010-11-22 4 views
0

Hello World!잘못된 스트림 헤더 : 47455420 - 자바 입력 스트림

현재 저는 communitcation을하기 위해 소켓을 사용하는 간단한 클라이언트/서버 응용 프로그램을 작성하고 있습니다. 내 클라이언트와 내 서버 응용 프로그램은 서로 잘 작동하지만 실제 웹 브라우저 (예 : Mozilla Firefox)로 내 서버 응용 프로그램을 쿼리하려고하면 예외가 발생합니다.

내 스트림이 Mozilla Firefox와 호환되지 않는다고 생각합니다. 이 작은 코드 행은 항상 "invalid stream header : 47455420"오류 메시지와 함께 IOException을 발생시킵니다. 파이어 폭스에서

나는 통해 연결을 시도 : http://localhost:7777/some-webpage.html

이 내 코드입니다 : 이런 일이 발생하는 이유

server = new ServerSocket(7777); 
Socket socket = server.accept(); 
try 
{ 
    ObjectInputStream inputStream = new ObjectInputStream(new BufferedInputStream(socket.getInputStream())); 
} 
catch (IOException ex) 
{ 
    System.out.println("This exception happens :-("); 
    System.out.println(ex.getLocalizedMessage()); 
} 

아무도 알고 있나요? 도움말은 즐거움으로 보입니다.

인사

베니

답변

0

ObjectInputStream를 이진 포맷을 기대하고있다. 웹 브라우저를 사용하여 읽는 바이너리 형식을 생성 할 수 없습니다. 웹 브라우저는 HTTP 프로토콜을 말하며 서버가 전혀 기대하지 않습니다.

아마도 웹 서비스에 대해 알아야 할 것입니다. 원하는 것을 위해 편리하게 JAX-RS 지원을 CXF에서 찾을 수 있습니다.

그냥 HTTP로 들여 보내려면 서블릿을 구현하는 것이 가장 중요합니다. Google은 그들에 대해 배우는 당신의 친구가 될 것입니다.

+0

빠른 답장을 보내 주셔서 감사합니다. HTTP 프로토콜을 쉽게 가져올 수있는 라이브러리가 있습니까? 또는 입력 스트림 형식을 변경하여이를 달성 할 수 있습니까? –

+0

ObjectInputStream 대신 표준 InputStream을 사용합니다. 이것은 웹 브라우저에 완벽하게 적합하며 BufferedReader의 InputStreamReader로 읽을 수 있습니다. 또한 HTTP/1.1 기본을 구현하여 이제 작동합니다. :-) 조언 해 주셔서 감사합니다. –