Связанное вступление в класс Java
DatagramSocket
public class DatagramSocket extends Object
Этот класс представляет собой розетку, используемое для отправки и получения пакетов Datagram.
Глазки DataGRAM - это отправка или получение точек услуг доставки пакетов. Каждый пакет, отправленный или полученный в сокете Datagram, адресован и маршрутизируется отдельно. Несколько пакетов, отправленных с одной машины на другую, могут выбрать разные маршруты или могут прибывать в разные заказы.
Отправка Broadcast UDP всегда включена в DatagramSocket. Чтобы получить вещательные пакеты, DatagramSocket должен быть связан с адресом подстановочного знака. В некоторых реализациях вещательные пакеты также могут быть получены, когда они связаны с более конкретным адресом.
Данные могут быть отправлены и получены через отправку и получение DatagramSocket.
public void receive(DatagramPacket p) throws IOException
Получить пакеты Datagram из этого розетка. Когда этот метод возвращается, буфер dataGrampacket заполняется полученными данными. Пакет Datagram также содержит IP -адрес отправителя и номер порта на машине отправителя.
Этот метод блокирует до тех пор, пока не будет получена датаграмма. Поле длины объекта пакета Datagram содержит длину полученной информации. Если информация длиннее длины пакета, информация будет сокращена
Если менеджер безопасности существует и метод проверки менеджера безопасности не разрешает операцию приема, пакет не может быть получен.
Параметр:
P-DataGrampacket для размещения входящих данных.
Бросать:
IoException - если возникает ошибка ввода/вывода.
Sockettimeoutexception - если SetSotimeout был вызван ранее, а значение тайм -аута истек.
PortunReachableException - может бросить, когда розетка подключена к в настоящее время недоступной цели. Обратите внимание, что нет никакой гарантии, что исключение будет брошено.
Нелегалоблокмодиксапция - если этот розетка имеет связанный канал, а канал находится в неблокирующем режиме.
public void send(DatagramPacket p) throws IOException
Отправить пакеты Datagram из этого розетка. DataGrampacket содержит информацию, указывающую: данные, которые должны быть отправлены, его длины, IP -адрес удаленного хоста и номер порта удаленного хоста
Если менеджер безопасности существует, и в настоящее время сокет не подключен к удаленному адресу, этот метод сначала выполняет некоторые проверки безопасности. Во -первых, если p.getaddress (). IsmulticastAddress () верно, этот метод вызывает метод контроля менеджера безопасности с p.getaddress () в качестве параметра. Если значение выражения является false, этот метод используется для вызова метода CheckConnect CheckConnect с p.getAddress (). Gethostaddress () и p.getport () в качестве параметров. Если операция не разрешена, каждый вызов методу Security Manager приведет к Security Exception.
Параметр:
P-Datagrampacket для отправки.
Бросать:
IoException - если возникает ошибка ввода/вывода.
SecurityException - Если менеджер безопасности существует, и его методы CheckMulticast или CheckConnect не разрешают отправлять.
PortunReachableException - может бросить, когда розетка подключена к в настоящее время недоступной цели. Обратите внимание, что нет никакой гарантии, что исключение будет брошено.
Нелегалоблокмодиксапция - если этот розетка имеет связанный канал, а канал находится в неблокирующем режиме.
DataGrampacket
public final class DatagramPacket extends Object
Этот тип представляет пакеты DATAGRAM UDP, которые используются для реализации услуг доставки без соединения пакетов
Метод строительства:
DatagramPacket(byte[]buf,intlength)
Построить DataGrampacket для получения пакетов данных длины
DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)
Создание пакетов Datagram для отправки пакетов длины на указанный номер порта на указанном хосте
Пример системы чата UDP
UDP подключен без соединений. Групповой чат должен отправлять данные по адресу вещания (адрес вещания), чтобы каждый получил сообщение; Используя метод потока, запустите поток отправителя и поток приемника, отправитель считывает вход клавиатуры в качестве вывода, приемник считывает входную информацию и отображает ее.
Отправитель
Udpsender.java
Пакет cn.xidian.socket; import java.io.bufferedReader; import java.io.ioexception; импорт java.io.inputStreamReader; импорт java.net.datagrampacket; импорт java.net.datagramsocket; импорт java.net.inetadress; public clus {// Создать UDP Service DatagramSocket Socket = new DataGramSocket (); // Подготовка пакета данных к отправке // Читать ввод из системы ввода ввода System BufferedReader in = new BufferedReader (New InputStreamReader (System.in); string line = null; while ((line = in.readline ())! = Null) {//i dopt test и написал локальный адрес. Групповой чат должен написать адрес вещания, например: 192.168.137.255datagrampacket data = new DataGrampacket (line.getbytes (), line.getbytes (). Length, inetaddress.getbyname ("127.0.0.1"), 9090); socketsocket.close ();} catch (ioexception e) {e.printstacktrace ();}}}Приемник
Udpreceiver.java
package cn.xidian.socket;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;public class UdpReceiver extends Thread {@Override public void run() {try {//Create UDP service and listen to port DatagramSocket socket = new DatagramSocket(9090);//Accept data packets byte [] temp = new Byte [1024];; dataGrampacket data = new DataGrampacket (temp, temp.length); boolean flag = true; while (flag) {socket.receive (data); // Вывод связанной информации Sender Information SenderDress = data.getAddress (). gethostaddress (); data.getAddress (). gethostName (); System.out.println (senderHostName+"("+senderAddress+")"+"говорит:"+new String (temp, 0, data.getlength ());} // закрыть ресурс сокета.Основной метод
Udpmain.java
Package cn.xidian.socket; открытый класс udpmain {public static void main (string [] args) {// start udpreceiver поток udpreceiver receiver = new udpreceiver (); receiver.start (); // start udpsender thread udpsender sender = new udpsender (); sender.start (););Результаты теста
Сторона ввода читает вход клавиатуры как вывод, приемник получает сообщение и отображает IP и имя хоста отправителя.
Суммировать
Выше приведено все содержание этой статьи о программировании Java с использованием UDP для создания примеров системы группового чата. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!