UDP Packet empfangen funktioniert nicht.

godi

Aktives Mitglied
Hallo,
ich habe meinen Windows PC eine statische IP vergeben (192.168.140.1) und direkt ein externes Gerät (192.168.140.10) angeschlossen.
Dieses Gerät sendet UDP Pakete mit 4Byte Nutzdaten von und an Port 2020.
Mit Wireshark (am Windows PC) kann ich die Pakete sehen, dass diese auch gesendet werden:
"1","0.000000","192.168.140.10","192.168.140.1","UDP","60","2020 → 2020 Len=4"
Hex Dump
0000 98 fa 9b 6e bd 77 64 4d 70 00 e8 e7 08 00 45 00
0010 00 20 2c 53 40 00 40 11 75 1d c0 a8 8c 0a c0 a8
0020 8c 01 07 e4 07 e4 00 0c 25 f2 2f bf 01 00 00 00
0030 00 00 00 00 00 00 00 00 00 00 00 00

Mein UDP Client sieht folgend aus:
Java:
import java.io.*;
import java.net.*;
import java.nio.ByteBuffer;

public class UDPClient {
 
    public static void main(String[] args) {
      
        String hostname = "192.168.140.1"; //"127.0.0.1";
        int port = 2020;
    
        
        try {
            InetAddress address = InetAddress.getByName(hostname);
            DatagramSocket socket = new DatagramSocket(port, address);
            socket.setReceiveBufferSize(4 * 1024);

            System.out.println("Socket open, receive Data!");
            
            while (true) {             
                byte[] buffer = new byte[4];
                DatagramPacket response = new DatagramPacket(buffer, buffer.length);               
                socket.receive(response);
 
                ByteBuffer receivedData = ByteBuffer.wrap(response.getData());
                System.out.println(receivedData.getInt());
            }           

            
        } catch (SocketTimeoutException ex) {
            System.out.println("Timeout error: " + ex.getMessage());
            ex.printStackTrace();
        } catch (IOException ex) {
            System.out.println("Client error: " + ex.getMessage());
            ex.printStackTrace();     
        
        }
        
    }
}

Der Code wird mit Eclipse gestartet, jedoch kann ich keine Pakete empfangen.
Weiß jemand warum?
Kann es sein das Eclipse irgendwas blockiert?

Testweise habe ich mir einen Server dazu geschrieben. Wenn ich die Daten über den Localhost dann sende, funktioniert es ohne Probleme.

godi
 

LimDul

Top Contributor
Eclipse eigentlich nicht, aber ggf. die Windows Firewall?

Während das Problem läuft kannst du ja mal in der Kommandozeile "netstat -p UDP -q" aufrufen - da sollte dann die IP-Adresse mit Port 2020 als lauschend auftauchen.
 

Jw456

Top Contributor
Win Firewall glaube ich nicht.
Viellmehr musst du erst mal einen request senden bevor du was empfangen kannst. Damit baust du erstmal eine Verbindung zum Server auf.

Das sollte bei UDP auch so sein.
 

LimDul

Top Contributor
Win Firewall glaube ich nicht.
Viellmehr musst du erst mal einen request senden bevor du was empfangen kannst. Damit baust du erstmal eine Verbindung zum Server auf.

Das sollte bei UDP auch so sein.
Das ist nun mal grober Unfug :)
Wie soll den jemand auf den Request antworten? Der muss doch auch mal erst einen Request senden bevor er den request empfangen kann.

Insbesondere ist UDP ein zustandsloses Protokoll im Gegensatz zu TCP. Da gibt es keine Verbindung die aufgebaut wird, sondern das ist Fire & Forget. Und man sieht ja an dem Wireshark Output open, dass Daten ankommen.
 
K

kneitzel

Gast
Win Firewall glaube ich nicht.
Viellmehr musst du erst mal einen request senden bevor du was empfangen kannst. Damit baust du erstmal eine Verbindung zum Server auf.

Das sollte bei UDP auch so sein.
UDP ist eine Verbindungslose Datenübertragung. Da gibt es also keinen Verbindungsaufbau. Und den request hat er ja gesendet und das sogar noch überprüft mit Wireshark.

Daher halte ich die Windows Firewall auch für sehr wahrscheinlich. Daher ggf. einfach mal einen Befehl absetzen wie:
netsh firewall add portopening UDP 2020 "UDP Port 2020"
 
K

kneitzel

Gast
Zum Thema grober unfug
Und hast Du da mal unter Datagram-Socket gelesen, was da Sache ist?

Serverseitig:
  1. Socket erstellen
  2. Socket binden
  3. warten auf Pakete
Und genau das hat er gemacht im Server.

Und der Server muss nichts senden um etwas empfangen zu können.

Dies hat der TE übrigens ja auch ausgetestet - lokal mit localhost lief es ja, was darauf hin deutet, dass der Code soweit korrekt ist.
 

LimDul

Top Contributor
Du kannst dir gerne mal in Ruhe das Beispiel hier zur Gemüte führen wie UDP in Java funktioniert:

Einer liest direkt, einer sendet direkt. Kein Handshake / Accept oder ähnliches. An die IP & Port binden und fertig. Und genau das macht der Thread-Ersteller hier - als Client, der was empfangen will.

Edit: Quark hier ist er ja der Server, weil er lauscht und nicht sendet - er bindet sich ja auf seine lokale Rechner IP. Ändert aber nix, die Unterscheidung zwischen Server & Client ist bei UDP - anders als bei TCP nicht durch den Aufbau einer Verbindung gegeben, sondern im Endeffekt durch die IP Adresse.
 
K

kneitzel

Gast
Er will keinen Server sondern einen Client
Wie Du es nennst, ist erst einmal egal. Er will empfangen. Und dazu macht er genau die richtigen Schritte. Rein lokal funktioniert es:
Testweise habe ich mir einen Server dazu geschrieben. Wenn ich die Daten über den Localhost dann sende, funktioniert es ohne Probleme.
Damit sollte doch auch Dir klar sein, dass er das, was er da macht, richtig gemacht hat...

Und die Dokumentation besagt überall das Gleiche. Selbst der Link von Dir besagt genau das, was wir Dir sagen. Und Deine Aussage von wegen Erst Senden damit man empfangen kann und Verbindungsaufbau sind und bleiben grober Unfug bei UDP / Datagram Sockets.
 

godi

Aktives Mitglied
UDP ist eine Verbindungslose Datenübertragung. Da gibt es also keinen Verbindungsaufbau. Und den request hat er ja gesendet und das sogar noch überprüft mit Wireshark.

Daher halte ich die Windows Firewall auch für sehr wahrscheinlich. Daher ggf. einfach mal einen Befehl absetzen wie:
netsh firewall add portopening UDP 2020 "UDP Port 2020"
1) Verbindungslose Datenübertragung => Full Ack
2) Firewall => Danke das wars! Und ich dachte es recht wenn ich Eclipse in der Firewall freigebe. :rolleyes: Hat mir mehr als einen Arbeitstag gekostet. :mad:

Danke für eure rege Teilnahme an der Diskusion.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V ganymed Illegal sftp packet len WS_FTP Netzwerkprogrammierung 2
CookieSoft Socket Packet per Socket Netzwerkprogrammierung 8
T Jpcap: Packet.data = ? Netzwerkprogrammierung 3
L Packet im Packet erhalten (Rahmen&Botschaft Problem) Netzwerkprogrammierung 6
E RTP Packet lesen - Byte Problem 0xFFFFFF80 statt 0x80 Netzwerkprogrammierung 7
L Dateninhalt im IP/TCP Packet genau bestimmen Netzwerkprogrammierung 3
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
T UDP Pakete empfangen ohne Programm zu blockieren Netzwerkprogrammierung 3
X Daten können nicht sofort empfangen werden Netzwerkprogrammierung 1
S Server - Mehrere Klassen sollen Daten senden und empfangen Netzwerkprogrammierung 25
B Nach Verbindung gleich ObjectStream empfangen Netzwerkprogrammierung 1
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
M Gleicher Port für Senden und Empfangen ? Netzwerkprogrammierung 17
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
1 Datei senden/empfangen funzt nicht... Netzwerkprogrammierung 5
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
A Socket DNS Update Pakete empfangen Netzwerkprogrammierung 3
P Server/Client Daten empfangen, wenn Daten gesendet werden Netzwerkprogrammierung 9
B Socket Daten empfangen funktioniert nicht richtig - wo liegt der Fehler? Netzwerkprogrammierung 7
KeNnY_tHe_OwNeR Empfangen geht, Senden nicht ?! Netzwerkprogrammierung 18
B Befehle an Gameserver senden bzw. empfangen Netzwerkprogrammierung 2
M Client/Server Antwort von Server empfangen Netzwerkprogrammierung 6
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
I Problem beim empfangen von Daten (Zahlen) Netzwerkprogrammierung 7
H Empfangen von Strings Netzwerkprogrammierung 14
A String per ByteBuffer empfangen? Netzwerkprogrammierung 6
M TCP Socket und Server int senden und empfangen Netzwerkprogrammierung 6
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
F Datei senden und empfangen Netzwerkprogrammierung 4
D DatagramSocket Empfangen Textarea Netzwerkprogrammierung 2
M Vom Server per Socket Empfangen, aber wieviel Bytes? Netzwerkprogrammierung 11
TRunKX Hilfe beim senden und empfangen Netzwerkprogrammierung 2
D Performance Problem beim File senden, empfangen Netzwerkprogrammierung 4
S senden und empfangen von Objekten? Netzwerkprogrammierung 7
JavaDevOp Socket Status von UDP-Port prüfen (PortUnreachableException funktioniert nicht?) Netzwerkprogrammierung 32
B Multicast-Nachrichten-Empfang funktioniert nicht Netzwerkprogrammierung 5
S BufferedStream funktioniert nicht immer Netzwerkprogrammierung 7
Dann07 Proxy funktioniert nicht so wie gewünscht! Netzwerkprogrammierung 18
M Textchat Funktioniert nur halb Netzwerkprogrammierung 2
H Einfacher Server funktioniert nicht Netzwerkprogrammierung 1
N Test Servlet funktioniert nicht Netzwerkprogrammierung 11
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
KingSquizzi3 Website parsen mit Hilfe von jsoup funktioniert nicht Netzwerkprogrammierung 3
V TCP Client funktioniert auf Emulator aber nicht auf Smartphone Netzwerkprogrammierung 5
N RMI "RMI über Lan funktioniert nicht" & "RMI-Server im Lan scannen" Netzwerkprogrammierung 13
G Mail senden funktioniert nicht mit SSL Netzwerkprogrammierung 7
L IText mit Servlets, funktioniert nicht Netzwerkprogrammierung 0
D TCP Socket funktioniert nicht richtig Netzwerkprogrammierung 3
L Email versenden mit Java funktioniert nicht, Fehlermeldungen: MessagingException & SocketException Netzwerkprogrammierung 10
C Portscanner funktioniert nicht! Netzwerkprogrammierung 8
K Chatprogramm - Server funktioniert nicht Netzwerkprogrammierung 5
G FTP FTP-Client funktioniert nicht bei Modem-Verbindungen Netzwerkprogrammierung 8
D JNLP über Webstart funktioniert nicht... Netzwerkprogrammierung 2
M HTTP File Upload mit Prozessbar Funktioniert nicht. Netzwerkprogrammierung 8
J FTP FTP funktioniert nicht. Netzwerkprogrammierung 5
R Client funktioniert nicht Netzwerkprogrammierung 2
M while-Schleife funktioniert nicht bei Nachrichtempfang von Server Netzwerkprogrammierung 3
L Socket Chat funktioniert nicht Netzwerkprogrammierung 2
D ...class.getResourceAsStream("/meine.properties") funktioniert nicht über RMI? Netzwerkprogrammierung 3
S RMI Methodenaufruf funktioniert nur lokal Netzwerkprogrammierung 11
C Java Chat funktioniert nicht richtig Netzwerkprogrammierung 6
V Quelltaxt einer Website auslesen funktioniert nicht Netzwerkprogrammierung 2
A RMI RMI Methodenaufruf funktioniert nur spontan Netzwerkprogrammierung 5
S RMI RMI-Applet kommunikation funktioniert nicht Netzwerkprogrammierung 8
D FTP Pfadangabe für ftp-upload funktioniert nicht Netzwerkprogrammierung 5
A Socket UnknownHostException funktioniert nicht! Netzwerkprogrammierung 3
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
R Java-Chat-Applet funktioniert nur in Eclipse Netzwerkprogrammierung 3
T RMI - Client Zugriff auf Server funktioniert nicht Netzwerkprogrammierung 5
M RMI, cast funktioniert nich Netzwerkprogrammierung 2
P Bilder: FTP-Upload funktioniert nicht richtig Netzwerkprogrammierung 2
G Datein versenden funktioniert nicht ! Netzwerkprogrammierung 19
W RMI funktioniert nur wenn ich im selben Eclipse Projekt bin Netzwerkprogrammierung 3
S OutputStreamWriter funktioniert nicht wie ich will Netzwerkprogrammierung 2
M serialisierung funktioniert nur nach neuer instanzierung Netzwerkprogrammierung 3
G Google-Suche funktioniert nicht Netzwerkprogrammierung 6
S Server - Telnet funktioniert, Server - Client nicht Netzwerkprogrammierung 3
F SimpleFTP funktioniert nicht Netzwerkprogrammierung 6
N UDP zwischen Java und C++ funktioniert nicht. Netzwerkprogrammierung 4
L JavaMail: Versenden von mails funktioniert nicht Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben