package elte.java2_utikalauz5.net;
import java.io.*;
import java.net.*;
/**
Egy összeköttetés-mentes szerveralkalmazás.
Ez az alkalmazás csomagot fogad a futtató számítógép
megadott sorszámú UDP portjáról, a csomag tartalmát pedig kiírja.
A programparaméterek:
- A szerver UDP portjának a sorszáma
@link.forrásfájl {@docRoot}/../data/net/src ClSeTeszt.java
@link.letöltés {@docRoot}/../data/net ClSeTeszt.jar
@since Java Útikalauz programozóknak
*/
public class ClSeTeszt {
public static void hasznalati_utasitas() {
System.out.println("Használat: java ClSeTeszt portsorszám");
System.exit(-1);
}
public static void main(String[] args) {
int server_port = 0;
if (args.length != 1) hasznalati_utasitas(); // sok/kevés argumentum
try { server_port = Integer.parseInt(args[0]); } // szerver port-sorszáma
catch (NumberFormatException e) { hasznalati_utasitas(); }
try {
byte[] uzenet = new byte[1500]; // helyet csinálunk az üzenetnek
String szoveg; // hely a Stringgé konvertált üzenetnek (szükséges,
// ugyanis Stringként akarjuk kiíratni, így
// konvertálni kell majd)
/* Létrehozunk egy csomagot, ahova a beérkező üzenetet tesszük */
DatagramPacket p = new DatagramPacket(uzenet, uzenet.length);
/* Létrehozzuk a szerver kommunikációs végpontot */
/* a megadott UDP porton */
DatagramSocket s = new DatagramSocket(server_port);
s.receive(p); // várunk egy csomagot, és a tartalmát beolvassuk p-be
// a kapott üzenet tartalmát Stringgé konvertáljuk
szoveg = new String(uzenet, 0, p.getLength());
System.out.println("Fogadtam csomagot a " + // és kiírjuk
p.getAddress().getHostName() +
" számítógéptől, a " +
p.getPort() + " sorszámú UDP portról." +
" Az üzenet tartalma: " + szoveg);
s.close(); // kommunikációs végpont lezárása
} catch (UnknownHostException e)
{ System.err.println("Ismeretlen host!"); }
catch (IOException e)
{ System.err.println("Nem sikerült a küldés!"); }
}
}