2016-05-06 7 views
0

Dieser ist mein Code:Sockel wird nicht akzeptieren, die Saiten

public class EchoServer { 

    ServerSocket ss; 
    Socket s; 
    DataInputStream din; 
    DataOutputStream dout; 

    public EchoServer() 
    { 
     try 
     { 
      System.out.println("server started"); 
      //ss = new ServerSocket(0); 
      //System.out.println("listening on port: " + ss.getLocalPort()); 
      ss = new ServerSocket(49731); 
      s = ss.accept(); 
      System.out.println(s); 
      System.out.println("connected"); 
      din = new DataInputStream(s.getInputStream()); 
      dout = new DataOutputStream(s.getOutputStream()); 
      Server_chat(); 
      ss.close(); 
     } 
     catch(Exception e) 
     { 
      System.out.println(e); 
     } 
    } 

    public static void main(String[] args) { 
     new EchoServer(); 
    } 

    public void Server_chat() throws IOException { 

     String str; 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     do 
     { 
      System.out.println("enter a string"); 
      str = br.readLine(); 
      System.out.println("str " + din.readUTF()); 
      dout.flush();    
     } 
     while(!str.equals("stop")); 
    } 
} 

Ich überprüfte 49731 Hafen von keinem Hafen vorbei. 0 früher und habe diesen Port.

Wenn ich den obigen Code auf Netbeans ausführen, zeigt die Ausgabe "Server gestartet" und dann läuft es weiter, obwohl es verbunden und Rest der von mir bereitgestellten Eingabe angezeigt werden sollte.

Antwort

0

Und dann läuft es weiter, obwohl es verbunden angezeigt werden sollte und Rest der Eingabe, die ich zur Verfügung stellen.

Warum sollte es weiter 'verbunden' drucken?

s=ss.accept(); 

In dieser Zeile sind: Streams für eine Verbindung zu diesen Buchse hergestellt werden und akzeptiert sie. Die -Methode blockiert, bis eine Verbindung hergestellt wird.

accept Methode wird auf einen Client warten, der sich mit ihm verbindet. Sie müssen also einen Client bereitstellen, der eine Verbindung zum Server herstellt. Sonst wird er ewig warten!

Für einige Beispiele zur Verwendung von Socket in Java siehe here und here.

Für mehr über accept() lesen here

+0

Dank bekam ich es, habe ich einen anderen Client Java-Programm und lief von ihnen beiden gleichzeitig das gewünschte Ergebnis zu erzielen. –