이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date |
2010/04/05 10:52:44 |
Name |
정지연 |
Subject |
자바 소켓 프로그래밍 관련 질문입니다. |
자바로 소켓 프로그램을 개발중입니다. 본 프로그램말고 테스트용으로 서버 하나 띄우고 클라이언트가 문자하나 서버로 전송하면 서버에서 print out 하고 접속을 계속 유지하는 무지 간단한 프로그램을 하나 만들었습니다.
에러상황을 대비해 보기 위해 접속이 유지된 상태에서 서버를 내렸다 올리고 클라이언트가 다시 문자를 전송하는 테스트를 해봤는데, 윈도우 환경인 제 로컬 PC에서는 바로 peer reset 이란 메시지와 함께 exception 이 납니다..
이게 정상겠죠.. 그럼 저 exception을 catch해서 다시 접속을 맺어준다거나 하는 후속조치를 취하면 되는데 문제는...
이걸 리눅스OS를 쓰는 개발환경으로 올리면 에러가 안난다는 겁니다...
처음 output stream 에 write 할때는 에러가 안납니다.. 물론 서버에도 클라이언트가 보낸 내용을 읽어오지를 않습니다.. 그냥 중간에서 사라져 버리는 거죠..
그리고 그 다음에 다른 건으로 write 하거나 read 할때야 broken pipe 에러가 나고요.. 그래서 에러의 원인이 났을때 바로 캐치할 수가 없는 문제가 발생합니다..
jdk 버전 문제도 아닌거 같고 OS환경에 따라 소켓통신에 차이가 나니까 조금 당황스러운데요..
윈도우에서 그랬던것처럼 처음에 바로 캐치할 방법이 없을까요? 일단 규칙은 서버가 ack 를 주지 않기 때문에 클라이언트는 그냥 write만 하면 끝입니다..
그 다음번 write 할때서야 문제를 캐치하고 다시 접속을 맺어주는 식으로 개발을 해놨는데.. 되도록이면 처음 문제가 생겼을때 캐치하고 싶습니다.. 어떻게 방법이 없을까요?
|
통합규정 1.3 이용안내 인용
"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
|