Voici deux personnes qui communiquent. Il est jugé en fonction de l'IP. Il n'y a aucun problème entre les deux.
Copiez le code comme suit :
importer java.io.BufferedReader ;
importer java.io.IOException ;
importer java.io.InputStreamReader ;
importer java.net.DatagramPacket ;
importer java.net.DatagramSocket ;
importer java.net.InetAddress ;
importer java.net.SocketException ;
importer java.net.UnknownHostException ;
classe publique Moi {
public static void main (String[] args) lance IOException {
new ReciveThread().start();//Le écouteur de configuration doit être placé devant
nouveau SendInfo().main(args);
}
}
classe SendInfo {
public static void main (String[] args) lance IOException {
BufferedReader bf = nouveau BufferedReader (nouveau InputStreamReader (System.in));
Chaîne str = null ;
Lignes de chaîne = "" ;
while ((str = bf.readLine()) != null) {
lignes += str;
if (str.equals("ok")) {
envoyer(lignes);
lignes = "" ;
}
if (str.equals("au revoir")) {
bf.close(); // break doit être ajouté, sinon il y aura un signal de retour chariot break ;
}
}
}
envoi vide statique (String str) {
// Programme réseau UDP
DatagrammeSocket ds = null ;
DatagrammePacket dp = null ;
essayer {
ds = new DatagramSocket(3000);//Ouvrir le numéro de port
} catch (SocketException e) {
// TODO Bloc catch généré automatiquement
e.printStackTrace();
}
essayer {
octet[] ip = nouvel octet[] { (octet) 10, 1, 1, (octet) 200 };
dp = nouveau DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByAddress(ip), 9000);//faso
} catch (UnknownHostException e) {
// TODO Bloc catch généré automatiquement
e.printStackTrace();
}
essayer {
ds.send(dp);
System.out.println("envoi réussi");
} catch (IOException e) {
// TODO Bloc catch généré automatiquement
e.printStackTrace();
}
ds.close();
}
}
la classe ReciveThread étend le fil {
public void run() {
tandis que (vrai) {
DatagrammeSocket ds = null ;
octet[] buf = nouvel octet[1024];
DatagrammePacket dp = null ;
essayer {
ds = new DatagramSocket(9000);//Ouvrir le port
} catch (SocketException e) {
// TODO Bloc catch généré automatiquement
e.printStackTrace();
}
dp = nouveau DatagramPacket(buf, 1024);
essayer {
ds.receive(dp);
} catch (IOException e) {
// TODO Bloc catch généré automatiquement
e.printStackTrace();
}
Chaîne str = new String(dp.getData(), 0, dp.getLength()) + "from"
+ dp.getAddress().getHostAddress() + ":port" + dp.getPort();
System.out.println(str);
ds.close();
}
}
}