-
Notifications
You must be signed in to change notification settings - Fork 1
/
UDPKommunikation.java
73 lines (59 loc) · 1.88 KB
/
UDPKommunikation.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
/**
*
* @author Nick
* Klasse, welche bidirektionale Kommunikation zu ESP32 mittels UDP
* ermöglicht.
*
*/
public class UDPKommunikation implements Runnable {
// Attribute
private final int MAX_UDP_SIZE = 255;
private DatagramSocket datagramSocket;
private Scanner scanner;
// Konstruktor
public UDPKommunikation() throws Exception {
datagramSocket = new DatagramSocket(6565);
scanner = new Scanner(System.in);
// Empfangsthread starten.
Thread empfang = new Thread(this);
empfang.start();
// Ziel Adresse, sowie Port
InetAddress zielIP = InetAddress.getByName("192.168.4.1");
int zielPort = 1234;
System.out.println("Geben sie etwas zu senden ein und bestätigen sie mit Eingabe.");
// 1. Thread ist für die Eingabe des Benutzer verantwortlich.
while (true) {
// Eingegebenen Daten
byte[] sendData = scanner.nextLine().trim().getBytes();
// Senden der Daten
DatagramPacket datagramPacket = new DatagramPacket(sendData, sendData.length, zielIP, zielPort);
datagramSocket.send(datagramPacket);
}
}
public static void main(String args[]) throws Exception {
new UDPKommunikation();
}
@Override
public void run() {
// 2. Thread ist für das Empfangen der Daten vom ESP 32 verantwortlich.
while (true) {
// Halter für Empfangsdaten
byte[] daten = new byte[MAX_UDP_SIZE];
DatagramPacket empfangPaket = new DatagramPacket(daten, MAX_UDP_SIZE);
// Es wird versucht ein Paket zu empfangen.
try {
datagramSocket.receive(empfangPaket);
} catch (IOException e) {
e.printStackTrace();
continue;
}
// Ausgabe an Kommandozeile
System.out.println("Empfang: " + new String(daten).trim());
}
}
}