[완료]리눅스에서 자바 소켓 프로그래밍 질문입니다.
글쓴이: bsnplus / 작성시간: 월, 2010/05/03 - 5:20오후
자바로 소켓 프로그래밍을 하고 있는데 문제가 발생되고 있습니다.
서버 소켓을 열어두고 클라이언트에서 접속을 시도하면 서버측에서
메시지를 하나 출력하고 끝나는 프로그램입니다.
문제는 리눅스 플랫폼에서 루프백 주소를 사용할 경우 프로그램이
잘 돌아가는데, 두 대의 컴퓨터에서 연결을 시도할 때 클라이언트
쪽에서 소켓 생성이 실패하게 됩니다.
윈도우에서 두 대의 컴퓨터로 한 결과 이상없이 잘 돌아갑니다.
리눅스는 Fedora 10, Java는 JDK 1.4.2 17입니다.
아시는 분 계시면 답변 부탁드립니다.
-----Server------------------ class chatServer{ final static int PORTNUM=2000; private ServerSocket serverSocket=null; private Socket newSocket = null; chatServer(){ try{ serverSocket = new ServerSocket(PORTNUM); System.out.println("Chatting server running. Port "+PORTNUM); }catch(Exception e){ System.out.println("Sever socket creation failed"); } connection(); } public void connection(){ while(true){ try{ newSocket = serverSocket.accept(); new chatter(newSocket); }catch(Exception e){ System.out.println("Socket creation failed"); } } } public static void main(String args[]){ new chatServer(); } } ----Client------------- import java.net.*; import java.io.*; class chatClient{ final static int PORTNUM = 2000; final static String SERVERIP="127.0.0.1"; private Socket newSocket = null; chatClient(){ try{ newSocket = new Socket(SERVERIP, PORTNUM); }catch(Exception e){ System.out.println("서버소켓 생성실패"); } } public static void main(String args[]){ new chatClient(); } }
Forums:
...
newSocket 이 하나여서 그런거 아닌가요 newSocket[] 배열을 써서 accept 문에 loop 를 추가해야 하는 거 아닌지
-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr
동작은 잘 되는 프로그램입니다.
윈도우에서는 잘 실행되는 프로그램인데 서로 다른 PC의 리눅스에서 연결이 되지 않는군요.
설마..
client의 주소란을 저렇게 적어두고 테스트 하신건 아니시죠?
예 클라이언트 주소는
실제 할당된 주소를 사용했습니다.
본문에도 말씀드렸던 바와 같이 윈도우에서는 두 대의 컴퓨터로 잘 실행이 되는 프로그램입니다.
System.out.println
System.out.println 대신
e.printStackTrace를 이용해 출력된 스택 트레이스를 올려 주시면
원인을 찾는데 더 도움이 될 듯 합니다.
-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.
방화벽 문제네요. 해결됐습니다.
방화벽은 전혀 생각하지 못하고 있었네요. 말씀하신 e.printStackTrace을 통해 에러 메시지를 확인한 결과
java.netNoRouteToHostException : No route to host라는 등의 메시지가 나와서 검색해 본 결과
방화벽이 있어서 생기는 문제로 확인이 됐습니다. 해결에 결정적인 실마리를 제공해주셨네요. 감사합니다.
답변 달아주신 다른 분들에게도 감사드립니다.
리눅스 사용자 권한
리눅스에서 자바 프로그램을 실행할 때 루트권한이 있나요? 예전에 자바 포럼에서 네트워크 프로그래밍시 루트권한으로 실행하라는 내용을 본 적이 있습니다.
댓글 달기