Socket UDP Übertragungs Problem

duddits

Aktives Mitglied
Hallo zusammen,

ich habe folgenden UDP-Clienten:
Java:
import java.net.*;

class UDPClient
{
		
	public static void (String[] args) throws Exception{
		InetAddress IPAddress = InetAddress.getByName("192.168.0.2");
		DatagramSocket clientSocket = new DatagramSocket();
	      for(int i =1; i <= 10000000; i++){
	    	  DatagramPacket sendPacket = new DatagramPacket(Integer.toString(i).getBytes("utf-8"), Integer.toString(i).getBytes().length, IPAddress, 9000);
	          clientSocket.send(sendPacket);
	      }
	      clientSocket.close();
	}

}

welcher 10.000.000 UDP-Pakete an folgenden UDP-Server senden soll:
Java:
import java.io.*;
import java.net.*;

class UDPServer
{

        public static void main(String[] args) throws Exception{
                DatagramSocket serverSocket = new DatagramSocket(9000);
        byte[] receiveData  = new byte[72];
        File f = new File("log.txt");
        while(true)
           {
              DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
              serverSocket.receive(receivePacket);
              
              
              String rcvd = new String(receivePacket.getData(),"utf-8");
              rcvd = rcvd.trim();

              try {
            
              FileWriter fw = new FileWriter(f,true);
              BufferedWriter bw = new BufferedWriter(fw); 

             bw.write(rcvd+"\n");

              bw.close();
              }catch(IOException e){
                  e.printStackTrace();
              }

           }
        }

}

Dabei sollten meiner Erwartung nach in der Datei log.txt 10.000.000 Zeilen vorhanden sein - wobei in jeder Zeile die Nr. des entsprechenden UDP-Paketes steht.
Ich habe mir die Datei log.txt mal angesehen und mir ist dabei aufgefallen, das (scheinbar) bis zur Zeile/Zahl 9.999 alle UDP-Pakete angekommen sind, allerdings bei den größeren Zahlen es zu erheblichen "Verlusten" (?) kommt.
Die Eigenschaften von UDP sind mir schon bewusst. Also das UDP ein verbindungsloses Protokoll ist und eine unsichere Verbindung für Paketverkehr darstellt, da weder die Auslieferung noch deren Reihenfolge garantiert wird.
Jedoch sollte es in meinem privaten Netz oder zumindest bei mir auf der Maschine (habe es auch schon aufm localhost versucht mit gleichen Resultat).


Mir will sich das ganze Verhalten nicht erschließen. Wo ist der Fehler in meiner Denkweise bzw. was kann ich versuchen, damit wirkliche alle Pakete ankommen (außer das ich TCP verwende, was ich ausschließen muss)?



Vielen Dank schon mal für Eure Hilfe!

Beste Grüße,
duddits
 
G

Gast2

Gast
Moin,

der Client

  • sendet nur

der Server

  • empfängt
  • öffnet einen FileWriter
  • öffent einen BufferedWriter
  • speichert das Ganze in die Datei

der Server verpasst ganz einfach erstmal ein paar Pakete, weil er viel mehr arbeiten muss ... außerdem musst Du noch [c]Flush[/c] ausführen um den Stream vor dem Schließem auch wirklich zu leeren - hier behält alleine schon die Implementierung der BufferedWriter Daten zurück (das BS puffert auch nochmal) ... zum Schluß solltest Du die LogDatei einmal öffnen - für den ganzen Test

hand, mogel
 

duddits

Aktives Mitglied
Hi mogel,

danke für Deine schnelle Antwort!
Das war genau der entscheidende Tipp.

Ich habe jetzt beim Client folgendes nach
Java:
clientSocket.send(sendPacket);
Thread.sleep(1);

eingebaut und im Server beim BufferedWriter ein flush....und siehe da, es funktioniert alles so, wie es sein soll :)
 
G

Gast2

Gast
Moin,

Code:
Thread.sleep(1)[/c] macht keinen Sinn ... bei Windows liegt die Auflösung an der Stelle bei ca. 15ms ... Linux dürfte auch in der Richtung liegen ... kannst das ja mal seperat testen und Dir die Werte ausgeben lassen

hand, mogel
 

Empire Phoenix

Top Contributor
Denke das Problem ist nen anderes.

100000 Udp packete in praktisch 0 ms -> Router / Netzwerkkarte whatever hat den buffer voll (netzwerk überlastung) und droppt dann einfach die Packete wie bei UDP ja erlaubt.

Bei UDP musst du dich selber darum kümmern das du nicht zu schnell schickst, wenn du einen akzeptablen teil der Daten auch erhalten möchtest.

(Btw viele Home router würde bei so einem Test wahrscheinlich sowieso sterben, weil neben dem buffer die embedded cpu das nicht schafft)
 

Empire Phoenix

Top Contributor
Das eine ist wie es sein sollte, das andere ist was reproduzierbar ein Speedport 700 irgetwas sowie die Fritzbox bei einem Freund machen.
Theorie vs Praxis halt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Socket Problem mit den WebSocket Antworten der Discord API Netzwerkprogrammierung 0
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
C RMI Produzent-Verbraucher-Problem - Code review Netzwerkprogrammierung 12
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
S Problem bei dem Bluetoothverbindungsaufbau Netzwerkprogrammierung 2
G Server-Client IO Problem Netzwerkprogrammierung 6
M Netty - TCP Problem Netzwerkprogrammierung 4
L Socket Problem mit Server Netzwerkprogrammierung 1
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
M Problem bei Socket (MultiplayerSpiel) Netzwerkprogrammierung 4
M Socket CDI, Websocket reference Problem ! Netzwerkprogrammierung 2
Shams Problem mit Eventbus in Verbindung mit Server Netzwerkprogrammierung 0
G apache httpClient Problem. Netzwerkprogrammierung 5
H Problem mit ObjectStreams Netzwerkprogrammierung 3
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
D Socket BufferedWriter/Reader Problem Netzwerkprogrammierung 1
Maxim6394 Problem mit Socks5 Implementierung Netzwerkprogrammierung 0
C Handle Connection Problem Netzwerkprogrammierung 3
E HttpUrlConnection Cookie Problem Netzwerkprogrammierung 0
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
O 4Gewinnt Multiplayer - Netzwerk Problem (TCP) Netzwerkprogrammierung 1
A Socket Socket-Problem - Object wird nicht übertragen Netzwerkprogrammierung 3
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
E einfaches Problem: Session-Handling bei Servlets Netzwerkprogrammierung 5
G Problem mit einem FileWatcher Netzwerkprogrammierung 7
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
B Client/Server Connection Problem Netzwerkprogrammierung 2
G Problem mit STATIC-Verständnis Netzwerkprogrammierung 8
S Umstellung AS400 auf Postgre - Problem beim Arbeiten mit Metadaten Netzwerkprogrammierung 2
J Facelets Include Rendered Problem Netzwerkprogrammierung 2
J Socket Problem mit C++/Java Netzwerkprogrammierung 20
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
G Socket NIO2 Problem mit AsynchronousSocketChannel beim Schließen Netzwerkprogrammierung 3
G Cookie Verwaltungs Problem nach Login auf InetSeite (Wo utma-Cookie?) Netzwerkprogrammierung 18
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 7
B Socket Problem mit Netzwerkchat Netzwerkprogrammierung 21
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
Maxim6394 ipv6 Problem Netzwerkprogrammierung 2
Maxim6394 Proxyserver Performance Problem Netzwerkprogrammierung 11
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 5
B RMI und Problem mit rmic-Tool Netzwerkprogrammierung 3
C FTP storeFileStream Problem Netzwerkprogrammierung 3
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
D JavaMail - Mailsabrufen Problem (imap) Netzwerkprogrammierung 12
J HTTP Übersetzung yahoo babelfish - Zeichensatz-Problem Netzwerkprogrammierung 6
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
M Problem beim Datenempfang Netzwerkprogrammierung 2
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
M Problem mit Socket-Verbindung Netzwerkprogrammierung 2
N NIO Problem beim speziellen Behandeln von einzelnen Benutzern Netzwerkprogrammierung 13
D Thread problem Netzwerkprogrammierung 3
T Servlets JSP: Tomcat Problem Netzwerkprogrammierung 4
K Client - Server Problem Netzwerkprogrammierung 16
T RMI Problem Client-Server Netzwerkprogrammierung 2
P RMI Stub Problem Netzwerkprogrammierung 3
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 2
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 6
D Problem mit ObjectInputStreams Netzwerkprogrammierung 10
D Socket Problem mit InputStreamReader Netzwerkprogrammierung 3
N CRC32 CheckSum Problem bei UDP Netzwerkprogrammierung 2
V Java Mail Api - IMAP Problem Netzwerkprogrammierung 6
P RMI Problem Netzwerkprogrammierung 4
I Problem bei Outputstreamerzeugung in anderer Klasse als Socket Netzwerkprogrammierung 5
S Socket Problem mit Objektübertragung Netzwerkprogrammierung 16
Shoox Reader / Writer Problem Netzwerkprogrammierung 2
S Problem mit 2 Serversockets unter Win XP Netzwerkprogrammierung 7
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
M RMI - Connection Problem Netzwerkprogrammierung 7
J Socket Client - Server Problem Netzwerkprogrammierung 4
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6
T Problem bei Findung der richtigen Architektur Netzwerkprogrammierung 3
AlexSpritze Authentication Problem bei WebServices Netzwerkprogrammierung 4
J Socket Problem -Proxies Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
F Konzept Problem Netzwerkprogrammierung 12
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
H Neues NIO problem nachricht an alle clients Netzwerkprogrammierung 3
J Client server problem Netzwerkprogrammierung 3
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
W RMI Problem Netzwerkprogrammierung 4
M Problem mit Server Netzwerkprogrammierung 5
N Socket Java server c# client problem Netzwerkprogrammierung 7
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
R RMI Hibernate Problem Netzwerkprogrammierung 4
Z RMI Problem Netzwerkprogrammierung 11
F RMI problem mit RMI Netzwerkprogrammierung 3
H Object Cast Problem nach Übertragung mit Log4j Netzwerkprogrammierung 5
H Log4j SocketAppender Problem Netzwerkprogrammierung 2
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
P Problem mit JOscarLib Netzwerkprogrammierung 6
0din SMTP Client - readline problem Netzwerkprogrammierung 4
C komisches Problem / ObjectInputStream erstellt sich nicht Netzwerkprogrammierung 5
W vista / win server 2003 netzlaufwerk problem Netzwerkprogrammierung 4
W Problem mit HTTP-Dateiübertragung Netzwerkprogrammierung 6
E Problem: netbeans 6.5 und webanwendung Netzwerkprogrammierung 6
C Problem mit Übertragung einer Klasse in RMI Netzwerkprogrammierung 10
B UDP Problem Netzwerkprogrammierung 25

Ähnliche Java Themen

Neue Themen


Oben