Introdução à classe Java relacionada
Datagramsocket
public class DatagramSocket extends Object
Esta classe representa um soquete usado para enviar e receber pacotes de datagrama.
Os soquetes de datagrama são os pontos de envio ou recebimento dos serviços de entrega de pacotes. Cada pacote enviado ou recebido em um soquete de datagrama é abordado e roteado separadamente. Vários pacotes enviados de uma máquina para outra podem escolher rotas diferentes ou chegar a pedidos diferentes.
O envio de transmissão do UDP está sempre ativado no DataGramsocket. Para receber pacotes de transmissão, o Datagramsocket deve estar vinculado a um endereço curinga. Em algumas implementações, os pacotes de transmissão também podem ser recebidos quando vinculados a um endereço mais específico.
Os dados podem ser enviados e recebidos através do envio e recebimento do Datagramsocket.
public void receive(DatagramPacket p) throws IOException
Receba pacotes de datagrama deste soquete. Quando esse método retorna, o buffer do datagroftacket é preenchido com os dados recebidos. O pacote de datagrama também contém o endereço IP do remetente e o número da porta na máquina do remetente.
Este método bloqueia até que o datagrama seja recebido. O campo de comprimento do objeto de pacote de datagrama contém o comprimento das informações recebidas. Se a informação for maior que o comprimento do pacote, as informações serão reduzidas
Se existir um gerente de segurança e o método de conceito de seleção do gerente de segurança não permitir a operação de recebimento, o pacote não poderá ser recebido.
parâmetro:
P-o datagropampacket para colocar os dados recebidos.
Lançar:
IoException - Se ocorrer um erro de E/S.
SockettimeoutException - Se o SetSoTimeout foi chamado anteriormente e o valor do tempo limite expirou.
PortunreachableException - pode jogar quando o soquete estiver conectado ao destino atualmente inacessível. Observe que não há garantia de que a exceção será lançada.
IllegalBlockingModeException - Se este soquete tiver um canal associado e o canal estiver no modo de bloqueio.
public void send(DatagramPacket p) throws IOException
Envie pacotes de datagrama deste soquete. DataGRampacket contém informações indicando: os dados a serem enviados, seu comprimento, o endereço IP do host remoto e o número da porta do host remoto
Se existir um gerente de segurança e o soquete não estiver conectado no momento do endereço remoto, esse método executa primeiro algumas verificações de segurança. Primeiro, se p.getAddress (). IsmulticasTAddress () for verdadeiro, esse método chama o método de checkmulticast do gerente de segurança com p.getAddress () como o parâmetro. Se o valor da expressão for falso, esse método será usado para chamar o método de checkConnect do gerenciador de segurança com p.getAddress (). Gethostaddress () e p.getport () como parâmetros. Se a operação não for permitida, cada chamada para o método do Security Manager resultará em uma segurança de segurança.
parâmetro:
P-DataGrampacket a ser enviado.
Lançar:
IoException - Se ocorrer um erro de E/S.
SecurityException - Se o gerenciador de segurança existir e seus métodos CheckMulticast ou CheckConnect não permitirem o envio.
PortunreachableException - pode jogar quando o soquete estiver conectado ao destino atualmente inacessível. Observe que não há garantia de que a exceção será lançada.
IllegalBlockingModeException - Se este soquete tiver um canal associado e o canal estiver no modo de bloqueio.
DataGRampacket
public final class DatagramPacket extends Object
Este tipo representa pacotes de datagrama UDP, que são usados para implementar serviços de entrega de pacotes sem conexão
Método de construção:
DatagramPacket(byte[]buf,intlength)
Construa DatagRampacket para receber pacotes de dados de comprimento
DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)
Construa pacotes de datagrama para enviar pacotes de comprimento para o número da porta especificado no host especificado
Exemplo do sistema de bate -papo em grupo UDP
O UDP está conectado sem conexões. O bate -papo em grupo é enviar dados para o endereço de transmissão (endereço de transmissão), para que todos recebam uma mensagem; Usando o método do thread, inicie um encadeamento do remetente e o thread do receptor, o remetente lê a entrada do teclado como a saída, o receptor lê as informações de entrada e a exibe.
Remetente
Udpsender.java
pacote cn.xidian.socket; importar java.io.bufferedReader; importar java.io.ioException; importar java.io.inputStreamReader; importar java.net.datagrampAcheT; java.Net.DATAMPOCKET; import java.Net.inTRestress; {// Crie serviço UDP Datagramsocket Socket = new Datagramsocket (); // Prepare o pacote de dados para enviar // Leia a entrada do sistema de entrada do sistema BufferReader em = new BufferredReader (novo inputStreamReader (System.in); O bate -papo em grupo precisa escrever o endereço de transmissão, por exemplo: 192.168.137.255DATAGRAPLACETATES = NOVO DATAGRIPPACKET (Line.GetBytes (), line.getbytes (). Length, 9090); socketsocket.close ();} catch (ioexception e) {e.printStackTrace ();}}}Receptor
Udpreceiver.java
pacote cn.xidian.socket; importar java.io.ioException; importar java.net.datagRampacket; importar java.net.datagramsocket; public class udpreceiver estends thread {@Override public void run () {Try {// Crie UDP Service e ouvidos a portagrams. byte [] temp = novo byte [1024]; dados de dados datagroftacket = new DatagRampacket (temp, temp.length); bandeira booleana = true; while (flag) {socket.receive (dados); // emitir a informação relacionada do remetente string remeteraddress = DataAddRess (). data.getAddress ().Método principal
Udpmain.java
pacote cn.xidian.socket; public class udpmain {public static void main (string [] args) {// inicia o fio udpreceiver thread udpreceiver receptor = new udpreceiver (); receptor.start (); // start udpsender udpsender senderer = udpsender ();Resultados do teste
A parte da entrada lê a entrada do teclado como saída, o receptor recebe a mensagem e exibe o nome IP e host do remetente.
Resumir
O exposto acima é todo o conteúdo deste artigo sobre programação Java usando o UDP para criar exemplos de código do sistema de bate -papo em grupo. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!