Сетевые классы и интерфейсы
Java поддерживает TCP/IP как за счет расширения уже имеющихся интерфейсов по-
токового ввода-вывода, представленных в главе 19, так и за счет добавления средств, не-
обходимых для построения объектов ввода-вывода в сети. Java поддерживает семейства
протоколов как TCP, так и UDP. TCP применяется для надежного потокового ввода-вы-
вода по сети. UDP поддерживает более простую, а потому быструю модель передачи дей-
таграмм от точки к точке. Классы, содержащиеся в пакете java.net, перечислены ниже.
Authenticator Inet6Address ServerSocket
CacheRequest InetAddress Socket
CacheResponse InetSocketAddress SocketAddress
ContentHandler InterfaceAddress (добавлен в Java SE 6) SocketImpl
CookieHandler JarURLConnection SocketPermission
CookieManager (добавлен в Java SE 6) MulticastSocket URI
DatagramPacket NetPermission URL
DatagramSocket NetworkInterface URLClassLoader
DatagramSocketImpl PasswordAuthentication URLConnection
HttpCookie (добавлен в Java SE 6) Proxy URLDecoder
HttpURLConnection ProxySelector URLEncoder
IDN (добавлен в Java SE 6) ResponseCache URLStreamHandler
Inet4Address SecureCacheResponse
Интерфейсы пакета java.net перечислены далее:
ContentHandlerFactory DatagramSocketImplFactory SocketOptions
CookiePolicy (добавлен в Java SE 6) FileNameMap
CookieStore (добавлен в Java SE 6) SocketImplFactory
InetAddress
Класс InetAddress используется для инкапсуляции как числового IP-адреса, так и
доменного имени для этого адреса. Вы взаимодействуете с классом, используя имя IP-
хоста, что намного удобнее и понятнее, чем IP-адрес. Класс InetAddress скрывает внут-
ри себя число. Он может работать как с адресами IPv4, так и с IPv6.
Методы-фабрики
Класс InetAddress не имеет видимых конструкторов. Чтобы создать объект
|
|
InetAddress, вы должны использовать один из доступных методов-фабрик. Методы-
фабрики (factory method) — это просто соглашение, в соответствии с которым статиче-
ские методы класса возвращают экземпляр этого класса. Это делается вместо перегрузки
конструктора с различными списками параметров, когда наличие уникальных имен ме-
тодов делает результат более ясным. Ниже приведены три часто используемых метода-
фабрики InetAddress.
static InetAddress getLocalHost()
throws UnknownHostException
static InetAddress getByName(String hostName)
throws UnknownHostException
static InetAddress[ ] getAllByName(String hostName)
throws UnknownHostException
Метод getLocalHost() просто возвращает объект InetAddress, представляющий
локальный хост. Метод getByName() возвращает InetAddress хоста, чье имя ему пере-
дано. Если эти методы оказываются не в состоянии получить имя хоста, они возбуждают
исключение UnknownHostException.
Когда одно имя используется для представления нескольких машин в Internet — это
обычное явление. В мире Web-серверов это единственный путь предоставления некото-
рой степени масштабируемости. Метод-фабрика getAllByName() возвращает массив
InetAddress, представляющий все адреса, в которые преобразуется конкретное имя. Он
также возбуждает исключение UnknownHostException в случае, если не может преобра-
|
|
зовать имя в хотя бы один адрес.
InetAddress также включает фабричный метод getDyAddress(), который принима-
ет IP-адрес и возвращает объект InetAddress. Причем могут использоваться как адреса
IPv4, так и IPv6.
В следующем примере распечатываются адреса и имена локальной машины, а также
двух широко известных Internet-сайтов.
// Демонстрация применения InetAddress.
import java.net.*;
Дата добавления: 2015-12-17; просмотров: 17; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!