Программирование на языке Java



Сетевые средства - часть 3


  • Socket(InetAddress address, int port) выполняет ту же работу, что и первый конструктор, но узел, с которым требуется установить соединение, задается не строкой, а объектом InetAddress. Этот конструктор может возбуждать только IOException.
  • Из объекта Socket в любое время можно извлечь информацию об адресе Internet и номере порта, с которым он соединен. Для этого служат следующие методы:

  • getInetAddressQ возвращает объект InetAddress, связанный с данным объектом Socket.
  • getPort() возвращает номер порта на удаленном узле, с которым установлено соединение.
  • getLocalPort() возвращает номер локального порта, к которому присоединен данный объект.
  • После того, как объект Socket создан, им можно воспользоваться для того, чтобы получить доступ к связанным с ним входному и выходному потокам. Эти потоки используются для приема и передачи данных точно так же, как и обычные потоки ввода-вывода, которые мы видели в предыдущей главе:

  • getInputStream() возвращает InputStream, связанный с данным объектом.
  • getOutputStream() возвращает OutputStream, связанный с данным объектом.
  • close() закрывает входной и выходной потоки объекта Socket.
  • Приведенный ниже очень простой пример открывает соединение с портом 880 сервера “timehost” и выводит полученные от него данные.

    import java.net.*;

    import java.io.*;

    class TimeHost {

    public static void main(String args[]) throws Exception {

    int c;

    Socket s = new Socket("timehost.starwave.com",880);

    InputStream in = s.getInputStream();

    while ((c = in.read()) != -1) {

    System.out.print( (char) c);

    }

    s.close();

    } }

    Сокеты “для серверов”

    Как уже упоминалось ранее, Java поддерживает сокеты серверов. Для создания серверов Internet надо использовать объекты класса ServerSocket. Когда вы создаете объект ServerSocket, он регистрирует себя в системе, говоря о том, что он готов обслуживать соединения клиентов. У этого класса есть один дополнительный метод accept(), вызов которого блокирует подпроцесс до тех пор, пока какой-нибудь клиент не установит соединение по соответствующему порту. После того, как соединение установлено, метод accept() возвращает вызвавшему его подпроцессу обычный объект Socket.




    Содержание  Назад  Вперед