2015-04-01 2 views
1

У меня есть этот код, который я просто скачал.socket.accept() не исполняется

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

public class Server { 
public static void main(String argv[]) throws Exception 
{ 
    String clientSentence; 
    String capitalizedSentence; 
    ServerSocket welcomeSocket = new ServerSocket(6060); 

    while(true) 
    { 
     Socket connectionSocket = welcomeSocket.accept(); 
     System.out.println("ssss"); 
     BufferedReader inFromClient = 
      new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 
     DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); 
     clientSentence = inFromClient.readLine(); 
     System.out.println("Received: " + clientSentence); 
     capitalizedSentence = clientSentence.toUpperCase() + '\n'; 
     outToClient.writeBytes(capitalizedSentence); 
    } 
} 

}

Сначала он бежал так хорошо тогда, когда я попытался запустить его обратно он работает, но он не дойдет до оператора печати:

System.out.println("ssss"); 

он останавливается на welcomeSocket.accept();

Даже я попробовал старый код сервера, который я использовал до того, как он еще не запустился и остановился в той же части, однако он перешел из терминала linux.

ответ

2

Он работает по назначению. Функция .accept() является функцией блокировки, что означает, что .accept() ждет попытки подключения и будет хранить ваш код там.

Если вы установили соединение с вашим сервером, оно пройдет мимо этой точки, один раз распечатает sss и после выполнения остальной части цикла while застрянет там, пока вы не создадите новое соединение.

+0

Да, вы правы. спасибо –

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