Angewandte Netzwerktechnik kompakt

Material zum Buch

zu Kapitel 8.3 (Sender / Empfänger)


Für Kapitel 8.3 stehen uns die Klassen BeispielUDPPartner1 und BeispielUDPPartner2 zur Verfügung, mit denen Daten über UDP/IP ausgetauscht werden können.

Partner2 sendet im Sekundentakt ein Datagramm mit einem Integer-Wert an eine IP-Adresse und einen Port. Partner1 empfängt die Datagramme auf diesem Port.

Vorschau der Java-Klassen zu Kapitel 8.3


BeispielUDPPartner1.java

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class BeispielUDPPartner1 {
	InetAddress seineAdresse;
	int seinPort;
	DatagramSocket udpSocket;
	byte[] bytePuffer;
	DatagramPacket udpPaket;

	public BeispielUDPPartner1(int meinPort, InetAddress seineAdresse, int seinPort) throws IOException {
		udpSocket = new DatagramSocket(meinPort); 
		System.out.println("Partner 1 Socket erzeugt");
		bytePuffer = new byte[10];
		udpPaket = new DatagramPacket(bytePuffer,bytePuffer.length);
		System.out.println("Partner 1 Datenpaket erzeugt");
		this.seineAdresse = seineAdresse;
		this.seinPort = seinPort;
	}

	public void tuWas() throws IOException {
		int zahl;

		do {
			udpSocket.receive(udpPaket);
			zahl = udpPaket.getData()[0];
			System.out.println("Partner 1 Empfangen: "+zahl + " insgesamt " + udpPaket.getLength() + " Bytes.");
		}
		while(true);
	}

	public void disconnect() throws IOException {
		udpSocket.close();
	}

	public static void main(String[] args) throws UnknownHostException, IOException {
		BeispielUDPPartner1 meinPartner1 = new BeispielUDPPartner1(4711,InetAddress.getByName("127.0.0.1"),4712);

		meinPartner1.tuWas();

		meinPartner1.disconnect();
	}
}

BeispielUDPPartner2.java

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class BeispielUDPPartner2 {
	InetAddress seineAdresse;
	int seinPort;
	DatagramSocket udpSocket;
	byte[] bytePuffer;
	DatagramPacket udpPaket;

	public BeispielUDPPartner2(int meinPort, InetAddress seineAdresse, int seinPort) throws IOException {
		udpSocket = new DatagramSocket(); //meinPort
		System.out.println("Partner 2 Socket erzeugt");
		bytePuffer = new byte[10]; // udpSocket.getReceiveBufferSize()
		udpPaket = new DatagramPacket(bytePuffer,bytePuffer.length);
		System.out.println("Partner 2 Datenpaket erzeugt");
		this.seineAdresse = seineAdresse;
		this.seinPort = seinPort;
	}

	public void tuWas(int startWert) throws IOException, InterruptedException {
		int zahl = startWert;

		do {
			byte [] data = new byte[1];
			data[0] = (byte)--zahl;
			udpPaket.setData(data);
			udpPaket.setLength(data.length);
			udpPaket.setPort(seinPort);
			udpPaket.setAddress(seineAdresse);
			udpSocket.send(udpPaket);
			System.out.println("Partner2 gesendet: "+zahl);
			Thread.sleep(1000);		
		}
		while(true);
	}

	public void disconnect() throws IOException {
		udpSocket.close();
	}

	public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException {
		BeispielUDPPartner2 meinPartner2 = new BeispielUDPPartner2(4712,InetAddress.getByName("127.0.0.1"),4711);

		meinPartner2.tuWas(100);

		meinPartner2.disconnect();
	}
}