2016-05-06 9 views
0

Это мой код:гнездо не будет принимать строки

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")); 
    } 
} 

Я проверил 49731 порт, не проходя порта нет. 0 раньше и получил этот порт.

Когда я запускаю приведенный выше код в Netbeans, на выходе отображается «сервер запущен», а затем он продолжает работать, даже если он должен показывать подключенный и оставшийся ввод, который я предоставляю.

ответ

0

И затем он продолжает работать, даже если он должен быть подключен, и остальная часть ввода, которую я предоставляю.

Почему он должен печатать «подключен»?

s=ss.accept(); 

В этой линии вы: прослушивает соединения должны быть сделаны к этому гнезду и принимает его. Метод блокируется до тех пор, пока не будет выполнено соединение.

accept Метод будет ждать клиента, который подключится к нему. Поэтому вам необходимо предоставить клиента, который подключается к серверу. В противном случае он будет ждать вечно!

Для примера о том, как использовать сокет в java, см. here и here.

Более подробную информацию о accept() чтения here

+0

спасибо я получил его, я создал еще одну программу-клиент Java и побежал оба одновременно для достижения желаемого результата. –

Смежные вопросы