Introduction de la classe Java connexe
Datagramsocket
public class DatagramSocket extends Object
Cette classe représente une prise utilisée pour envoyer et recevoir des paquets de données.
Les prises Datagram sont les points d'envoi ou de réception des services de livraison de paquets. Chaque paquet envoyé ou reçu sur une prise Datagram est traité et acheminé séparément. Plusieurs paquets envoyés d'une machine à une autre peuvent choisir différents itinéraires ou peuvent arriver dans différents ordres.
L'envoi de diffusion UDP est toujours activé sur DatagramSocket. Afin de recevoir des paquets de diffusion, DatagramSocket doit être lié à une adresse générique. Dans certaines implémentations, des paquets de diffusion peuvent également être reçus lorsqu'ils sont liés à une adresse plus spécifique.
Les données peuvent être envoyées et reçues via l'envoi et la réception de DatagramSocket.
public void receive(DatagramPacket p) throws IOException
Recevez des paquets de données de cette prise. Lorsque cette méthode revient, le tampon de Datagrampacket est rempli des données reçues. Le paquet Datagram contient également l'adresse IP de l'expéditeur et le numéro de port de la machine de l'expéditeur.
Cette méthode bloque jusqu'à ce que le datagramme soit reçu. Le champ de longueur de l'objet de paquet Datagram contient la longueur des informations reçues. Si les informations sont plus longues que la longueur du paquet, les informations seront raccourcies
Si un responsable de la sécurité existe et que la méthode de contrôle de contrôle du gestionnaire de sécurité n'autorise pas l'opération de réception, le paquet ne peut pas être reçu.
paramètre:
P-Le Datagrampacket pour placer les données entrantes.
Lancer:
IOException - Si une erreur d'E / S se produit.
SocketTimeoutException - Si SetSoIMEOut a été appelé précédemment et que la valeur de délai d'expiration a expiré.
PortuNreachableException - peut lancer lorsque la prise est connectée à la cible actuellement inaccessible. Notez qu'il n'y a aucune garantie que l'exception sera lancée.
IllégalblockingModeException - Si cette prise a un canal associé et que le canal est en mode non bloquant.
public void send(DatagramPacket p) throws IOException
Envoyez des paquets de datagram à partir de cette prise. Datagrampacket contient des informations indiquant: les données à envoyer, sa longueur, l'adresse IP de l'hôte distant et le numéro de port de l'hôte distant
Si un gestionnaire de sécurité existe et que le socket n'est pas actuellement connecté à l'adresse distante, cette méthode effectue d'abord des vérifications de sécurité. Premièrement, si P.GetAddress (). IsMulticAttAddress () est vrai, cette méthode appelle la méthode CheckMulticast du gestionnaire de sécurité avec P.GetAddress () comme paramètre. Si la valeur de l'expression est fausse, cette méthode est utilisée pour appeler la méthode CheckConnect du Manager de sécurité avec P.GetAddress (). GethostAddress () et P.Getport () comme paramètres. Si l'opération n'est pas autorisée, chaque appel à la méthode du gestionnaire de sécurité se traduira par Sécurité Exception.
paramètre:
p-datagrampacket à envoyer.
Lancer:
IOException - Si une erreur d'E / S se produit.
SecurityException - Si le responsable de la sécurité existe et ses méthodes CheckMulticast ou CheckConnect ne permettent pas d'envoyer.
PortuNreachableException - peut lancer lorsque la prise est connectée à la cible actuellement inaccessible. Notez qu'il n'y a aucune garantie que l'exception sera lancée.
IllégalblockingModeException - Si cette prise a un canal associé et que le canal est en mode non bloquant.
Datagrampacket
public final class DatagramPacket extends Object
Ce type représente les paquets de datagramme UDP, qui sont utilisés pour implémenter des services de livraison de paquets sans connexion
Méthode de construction:
DatagramPacket(byte[]buf,intlength)
Construire Datagrampacket pour recevoir des paquets de données de longueur
DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)
Construisez des paquets de données pour envoyer des paquets de longueur au numéro de port spécifié sur l'hôte spécifié
Exemple de système de chat de groupe UDP
UDP est connecté sans connexions. Le chat de groupe consiste à envoyer des données à l'adresse de diffusion (adresse de diffusion), afin que tout le monde reçoive un message; À l'aide de la méthode du thread, démarrez un thread de l'expéditeur et le thread du récepteur, l'expéditeur lit l'entrée du clavier comme sortie, le récepteur lit les informations d'entrée et l'affiche.
Expéditeur
Udpsender.java
Package CN.Xidian.socket; Importer java.io.BuffereDReader; Importer java.io.ioException; import java.io.inputstreamreader; import java.net.datagrampacket; import java.net.datagramsocket; import java.net.netaddress; Public Class udpSender étend Thread {@override VOID {// Créer UDP Service DatagramSocket Socket = new DatagramSocket (); // Préparez le paquet de données pour envoyer // lire l'entrée du système Entrée BufferedReader dans = null; whileDader ((line = in.readline ()! = Null) {// J'ai fait le test et j'ai écrit la traite locale. Le chat de groupe doit écrire l'adresse de diffusion, par exemple: 192.168.137.255Datagrampacket data = new Datagrampacket (line.getBytes (), line.getbytes (). Length, inetAddress.getByName ("127.0.0.1"), 9090); // Envoyer des données de données. socketsocket.close ();} catch (ioException e) {e.printStackTrace ();}}}Récepteur
Udpreceiver.java
package cn.xidian.socket; import java.io.ioexception; import java.net.datagrampacket; import java.net.datagramsocket; classe publique udpreciiver étend le thread {@Override public void run () {try {// créer un service udp et écouter les packsocket de portage = news datagramsocket (9090); BYTE [] temp = new Byte [1024]; datagrampacket data = new Datagrampacket (temp, temp.length); booléen flag = true; while (drap) {socket.receive (data); // spuet l'information liée de l'expéditeur SenderAddress = data.getAddress (). GethostadDress (); String SenderHostname = data.getAddress (). GethostName (); System.out.println (SenderHostName + "(" + SenderAddress + ")" + "dit:" + new String (temp, 0, data.getLength ()));} // clôturez la ressource socket.close ();} cat (ioException e) {E.PrintStackTrace (););Méthode principale
Udpmain.java
package cn.xidian.socket; classe publique udpmain {public static void main (string [] args) {// start udpreceiver thread udpreceiver receiver = new udpreceiver (); receiver.start (); // start udpsender thread udpSender Sender = new UDPSender (); Sender.Start ();}}Résultats des tests
La partie d'entrée lit l'entrée du clavier sous forme de sortie, le récepteur reçoit le message et affiche l'IP et le nom d'hôte de l'expéditeur.
Résumer
Ce qui précède est tout le contenu de cet article sur la programmation Java en utilisant UDP pour créer des exemples de code du système de chat de groupe. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!