2012-04-09 20 views
0

Warum schließt dieser Port/Socket, sobald eine Verbindung von einem Client hergestellt wurde?Java Socket schließt nach Verbindung?

package app; 

import java.io.*; 
import java.net.*; 

public class socketServer { 

public static void main(String[] args) { 
    int port = 3333; 
    boolean socketBindedToPort = false; 

    try { 
     ServerSocket ServerSocketPort = new ServerSocket(port); 
     System.out.println("SocketServer Set Up on Port: " + port); 
     socketBindedToPort = true; 

     if(socketBindedToPort == true) { 
      Socket clientSocket = null; 

      try { 
       clientSocket = ServerSocketPort.accept();//This method blocks until a socket connection has been made to this port. 
       System.out.println("Waiting for client connection on port:" + port); 
       /** THE CLIENT HAS MADE A CONNECTION **/ 
       System.out.println("CLIENT IS CONENCTED"); 
      } 
      catch (IOException e) { 
       System.out.println("Accept failed: " + port); 
       System.exit(-1); 
      } 
     } 
     else { 
      System.out.println("Socket did not bind to the port:" + port); 
     } 
    } 
    catch(IOException e) { 
     System.out.println("Could not listen on port: " + port); 
     System.exit(-1); 
    } 



} 


} 
+1

Nur eine auf Verbindungsanfragen hören Beachten Sie, dass Ihre Druckdaten in der falschen Reihenfolge sind. Sie sollten "Warten auf Client-Verbindung ..." vor clientSocket = ServerSockPort.accept(); – Joel

Antwort

4

Nicht getestet, aber ich bin mir ziemlich sicher, dass es ist, weil nichts mehr in Ihrem Programm übrig ist. Einmal ServerSocketPort.accept(); beendet das Programm das Ende von main und schließt.

0

Sie müssen einen Stream hinzufügen, der auf den Client reagiert.

versuchen Sie dies:

Socket accepted = serverSocketPort.accept(); 
InputStream inStr = accepted.getInputStream(); 
+0

Wie füge ich einen Listener hinzu, der reagiert, wenn der Client eine Verbindung zu ihm hergestellt hat? – Aaron

+0

@Matthew sorry ich meinte Stream. Sie müssen die Sachen lesen, die der Kunde Ihnen schickt. –

0

Das Programm ist absolut in Ordnung läuft. Es wird stoppen, sobald ein Client die ServerSocket Timeout verbindet. Was ist dein Ziel hier?

0

@ Matthew.

IMHO, hat Joel die nächste Antwort auf Ihre Frage.

„Die Verbindung wird geschlossen, weil das Programm vorhanden ist, nachdem es eine Verbindung akzeptiert“, wird in einer Schleife laufen die nehmen normalerweise

so dass, hält der Server auf dem Port