Что такое розетка
Две программы в сети реализуют обмен данными с помощью двухэтажного связи. Сокет обычно используется для достижения связи между клиентом и сервисной партией. Socket - это очень популярный интерфейс программирования протокола TCP/IP, а сокет определяется IP -адресом и номером порта.
Тем не менее, типы протоколов, поддерживаемых сокетами, являются не только TCP/IP, поэтому между ними нет обязательно. В среде Java программирование сокетов в основном относится к сетевому программированию на основе протокола TCP/IP.
Процесс связи сокета
Есть ли у сервера End Listen (Monitor) запрос подключения, клиент отправляет запрос Connect на сторону сервера, а сервер отправляет сообщение доступа к клиенту. Соединение установлено. Как сервер, так и клиент могут общаться с другой стороной с помощью отправки, записи и других методов.
Для полного розетки должны быть включены следующие основные структуры.
(1) создать розетку;
(2) открыть вход/отток, подключенный к розетку;
(3) операция прочтения/записи гнета в соответствии с определенным протоколом;
(4) Выключите гнездо не вызывает ничего, что может вызвать что -либо.
Создать сокет
Java предоставляет два типа сокетов и серверов в Java.net, которые используются для представления клиента и сервера двухэтажного соединения. Это два очень хороших класса, которые очень хороши, что удобно для использования. Метод структуры выглядит следующим образом:
СОКАЗКИ (Индаддресс Адрес, int port); LocalAddr, int localport)
Среди них IP -адрес, имя хоста и номер порта другой стороны в двухстороннем соединении, соответственно. Адрес хоста Serversocket), IMP - это родительский класс розетки, который можно использовать для создания Serversocket и может использоваться для создания сокета. Подсчет означает максимальное количество соединений, которые может поддерживать сервер. Например: обучение видео -сети http://www.xxspw.com
Сокет клиент = новая розетка
Обратите внимание, что при выборе порта вы должны быть осторожны. Каждый порт предоставляет конкретную услугу. Номер порта 0 ~ 1023 зарезервирован системой. Выберите номер порта, лучше всего выбрать один более 1023. Число состоит в том, чтобы предотвратить конфликты.
Если при создании сокета возникает ошибка, будет сгенерировано ioException, и она должна быть обработана в программе. Следовательно, создание гнезда или серверкета должно быть захвачено или брошено.
Код
сервер
Пакет; Входные устройства = новый BufferedRead (New InputStreamRead (Client.GETINPTREAM (Клиент, Клиент « +count +» Times! ) {flag = false; client {client .close ();}} наконец {server.close ();}}}
клиент
Пакет; . CIN. }}}}}}
Серверная привязка IP
При написании гнезда с C -структурой Sockaddr_in может указывать SIN_ADDR.S_ADDR, то есть вы можете указать IP -адрес.
Я могу просто захотеть связать IP -адрес сетевой карты ETH0, потому что мой LO и WLAN0 могут использовать виртуальный хост NGINX с одним портом.
план
Конструктор Serversocket заключается в следующем:
Public Serversocket (int port, intadddress bindddr) бросает ioException
Параметр:
Порт -локальный TCP -порт
Отставление -задержка
BindAddr -чтобы быть полученным сервером
Поскольку inetadress не имеет конструктора, я некоторое время запутался.
Например, код
Indadress bindip = inetAddress.getByName ("192.168.1.168"); Одновременный доступ
Сервер обрабатывает несколько клиентов, добавляя многочисленные запросы одновременно.
Код сервера
Capitalsock; Static int clientnum = 0; ), CANTISERISERVER.CLIENTNUM ++); (Socket S, int id) {this.client = s; true) {string data = input.readline (); ); ;} Catch (ioException e) {e.printstacktrace ();}}}}}}}}}}}}
Клиент -код клиента в основном не изменился, добавив операцию выхода
Capitalsocke; 1.168 ", 9898); try {printwriter output = new PrintWriter (client.getOutputStream (), true); сканер cin = new Scanner (System.in); String Words; while (cin .hasnext ()) {words = cin. Nextline (); ;