2011-03-15 6 views
1

좋아요. 하나의 자바 프로그램에서 다른 자바 프로그램으로 int를 보내는 것 (분당 같은 컴퓨터). 그러나, 가끔 예외를 받고 있어요과 늘 연결 : 스레드에서java에서 int를 보내는 중입니다. 때때로 예외가 발생합니까?

예외 "주요"java.net.ConnectException : 연결이 거부 : java.net.PlainSocketImpl.socketConnect에서 를 연결 (기본 방법) java.net.PlainSocketImpl.connect에서 java.net.PlainSocketImpl.connectToAddress (PlainSocketImpl.java:195) 에서 java.net.PlainSocketImpl.doConnect (PlainSocketImpl.java:333) (PlainSocketImpl.java:182) 에서 에서 java.net.Socket.connect (Socket.java:478) 에서 java.net.Socket.connect (Socket.java:529) 에서 java.net.SocksSocketImpl.connect (SocksSocketImpl.java:366)java.net.Socket의에. java.net.Socket의시 (Socket.java:375) . (Socket.java:189) Client.main (Client.java:6) 여기에서

인 보내는 코드 :

 Socket socket = new Socket("localhost" , 8080); 
    DataOutputStream out = new DataOutputStream(socket.getOutputStream()); 
    out.writeInt(5); 
    socket.close(); 

및 수신을위한 : 때로는 작동하고 때로는 때문이 아니라 그냥 이상한

ServerSocket serverSocket = new ServerSocket(8080); 
    Socket socket = serverSocket.accept(); 

    DataInputStream din = new DataInputStream(socket.getInputStream()); 
    System.out.println(din.readInt()); 
      socket.close(); 

. 왜 누군가는 어떤 아이디어를 가지고 있습니까?

+1

그냥 한 가지 덧글 : 사용 후 DataOutputStream을 닫아야합니다. –

+4

소켓을 사용할 때 serverSocket이 수신하는 것을 긍정적으로 생각하십니까? – vickirk

+2

소켓을 만들 때 오류가 발생하므로 서버가 없기 때문에 오류가 발생하는 경우가 있습니다. – ZeissS

답변

1

내가 당신 경우이 오류가 발생 내기 :

  1. 가 다시 클라이언트를 시작 클라이언트 시작 서버
  2. 을 시작
  3. 서버를 다시 시작하지 않고,

당신의 서버는 받아 들인다 하나의 연결을 종료 한 다음 종료합니다. 또 다른 요청을 다시 청취 할

ServerSocket serverSocket = new ServerSocket(8080); 
while (true) { 
    Socket socket = serverSocket.accept(); 
    DataInputStream din = new DataInputStream(socket.getInputStream());  
    System.out.println(din.readInt());    
    socket.close(); 
} 

요청을 서비스 한 후 또는 대기를 가지고 : 당신이 순차적 연결의 무한 수를 수용 할 경우

,과 같이 루프와 서버 코드를 둘러싸고 의뢰.

+0

그냥 문제를 해결했다. 문제는 잘못된 시간에 소켓을 닫고 try ... catch 내에서 catch하는 것이 었습니다. 당신의 도움을 주셔서 감사합니다! – user650309

1

the description of the exception 인용 :. 리모트 주소 및 포트에 소켓을 연결하는 중에 에러가 발생

"신호를 전형적으로, 접속이 원격으로 거부 하였다 (예를 들어, 어떤 프로세스가 원격 주소에서 수신되지/포트)."

포트를 수신하는 것이 거의 없습니다. 서버 코드는 하나의 연결을 허용 한 다음 종료되므로 모든 연결에 대해 서버를 다시 시작하지 않는 한 가장 가능성이 높은 원인입니다. 그렇지 않은 경우 서버 앱이 실행 중인지 확인하십시오.

+0

종료 할 때까지 서버 측에서 임의의 연결 수를 허용하는 루프가 부족한 것처럼 보입니다. –

관련 문제