Конструктор ServerSocket с точки зрения дилетантов - PullRequest
0 голосов
/ 29 марта 2011

Что будет делать это утверждение:

ServerSocket ss=new ServerSocket(4646);

Пожалуйста, объясните в терминах непрофессионала.

Ответы [ 4 ]

1 голос
/ 29 марта 2011

Оператор эффективно сообщает JVM прослушивать указанный порт (4646) для входящих соединений.Само по себе это ничего не значит, так как вам придется принимать входящие соединения с этим портом и использовать их для построения обычных Socket объектов, которые затем будут использоваться для ввода / вывода данных.

Можно сказать, чтоServerSocket - это объект, через который создаются реальные сокеты TCP между клиентами и сервером.Когда вы его создаете, JVM подключается к операционной системе, сообщая ей об отправке соединений, которые поступают через этот порт в вашу программу.

Обычно вы делаете что-то вроде:

public AcceptThread extends Thread {
  public void run() {
    ServerSocket ss = new ServerSocket(4646);
    while (true) {
      Socket newConnection = ss.accept();
      ClientThread thread = new ClientThread(newConnection);
      thread.start();
    }
  }
}

Итакчто вы будете принимать входящие соединения и открывать для них ветку.

1 голос
/ 29 марта 2011

Прямо из ServerSocket Java документов :

Создает сокет сервера, связанный с указанным портом.

Что такое сокет сервера?

Этот класс реализует серверные сокеты. Серверный сокет ожидает поступления запросов по сети. Он выполняет некоторую операцию на основе этого запроса, а затем, возможно, возвращает результат запрашивающей стороне.

1 голос
/ 29 марта 2011
public ServerSocket(int port) throws IOException

документация:

Создает сокет сервера, связанный с указанный порт. Порт 0 создает сокет на любом свободном порту.

0 голосов
/ 29 марта 2011

Это связывает ваш ServerSocket с портом 4646 на локальном компьютере.

После этого вы можете принимать сокеты для этого соединения с

// pick up server side of the socket
Socket s = ss.accept();

Теперь ваш клиент может подключиться к вашему серверу,установить соединение через сокет, как это

// pick up client side of the socket, this is in a different program (probably)
Socket connectionToServer = new Socket("myserver",4646);
...