Ping implementierung in TCP mit fragen...

lumo

Top Contributor
Hallo

ich habe eine chat-anwendung geschrieben und auch einen PING eingebaut.
mein probem ist nun folgendes:

server und client am selben rechner, zugriff über localhost: ping: 0-6ms
server und client am selben rechner, zugriff über externe ip: ping 200-206ms
server und client am entfernten rechner (300km), zugriff über externe ip: ping ~270ms;

mir ist klar, dass man für ping normalerweise UDP verwendet, da es schneller ist.
mit den bestätigungen müsste ich den ping/2 dividieren, glaube ich.
also ein realistischer ping wäre ~35 gewesen, (70/2 wäre da eh genau ;))
ich mache während dem senden und empfangen, weder am client noch am server irgendwelche consolen ausgaben oder graphische aktionen.

der server sendet: packet(System.currentTimeMillis())
der client empfängt und sendet einfach das selbe paket wieder zurück;
der server empfängt und rechnet ping = (System.currentTimeMillis()-packet.getTimeStamp());

der effektive ping wäre dann ping/2;

was mir aber unklar ist, woher die 200ms herkommen...
 

lumo

Top Contributor
bei mir ist ein router gbit vorgeschaltet und ich hab eine 100mbit leitung...
aja, und manueller ping im cmd ist 30...
 

TheDarkRose

Gesperrter Benutzer
Ping = ICMP != UDP
Du machst da TCP und das ist klar, das dies etwas länger braucht, da je nach Nachrichtengröße mehrere Pakete verschickt werden, und für jedes Paket vom Empfänger mit einen ACK quittiert werden muss.
 

Lumaraf

Bekanntes Mitglied
In TCP gibt es noch eine Optimierung die zu leicht verzögerten Antworten führen kann. Die Optimierung läßt sich mit socket.setTcpNoDelay(true); deaktivieren. Unter Vista und 7 gibt es dabei aber leider einen Bug der bei dem Aufruf in einigen Fällen eine Exception verursacht.
 

TheDarkRose

Gesperrter Benutzer
Nicht nur das, sondern auch das der 3-Way handshake und das Quitteren jedes Paket bringt solche Zeiten einfach zusammen. Darum läuft ein Ping auch über ICMP.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MaxG. Netzwerk Ping falsches ergebnis Netzwerkprogrammierung 7
MaxG. Ping in JTextArea anzeigen Netzwerkprogrammierung 11
Dit_ UDP Port testen | Ping Google? Netzwerkprogrammierung 7
M Ping mehrerer Ports aus int[] ohne for-Schleifendurchlauf Netzwerkprogrammierung 11
U Ping mit isReachable realisieren ? Netzwerkprogrammierung 5
E PC mit Ping überwachen Netzwerkprogrammierung 2
weeego Ping über CMD, Umweg über Batch Datei sparen. Netzwerkprogrammierung 17
A Ping unter Java Netzwerkprogrammierung 5
S Eigenen Ping Befehl programmieren? Netzwerkprogrammierung 5
G Corba Implementierung Netzwerkprogrammierung 0
Maxim6394 Problem mit Socks5 Implementierung Netzwerkprogrammierung 0
S Client-Implementierung mit Authorisierung Netzwerkprogrammierung 8
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
N Fragen zu Sockets Client Netzwerkprogrammierung 3
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
B Grundlegende Fragen zu einem Verbindungsaufbau in einem LAN Netzwerkprogrammierung 15
M Fragen zu Java NIO Netzwerkprogrammierung 2
F Fragen zu Netzwerkspiel, ArrayList verschicken Netzwerkprogrammierung 5
S HTTP Grundlegende Fragen zu java multithreading & Glassfish Netzwerkprogrammierung 3
dayaftereh Fragen zu Apache Mina? Netzwerkprogrammierung 5
A Fragen zum Ablauf Netzwerkprogrammierung 14
DeviAn Über ein Linux Server ein Windows Server nach einer File fragen Netzwerkprogrammierung 6
Developer_X Habe fragen zur Chat Programmierung Netzwerkprogrammierung 4
G Fragen zu RMI Netzwerkprogrammierung 8
S [RMI] Allgemeine Fragen Netzwerkprogrammierung 5
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
S paar Fragen Netzwerkprogrammierung 6
E RMI - ServerFactory und ein paar Fragen Netzwerkprogrammierung 2
A RMI -Activation; Fragen zur automat. Objektaktivierung Netzwerkprogrammierung 2

Ähnliche Java Themen


Oben