Frage zu SO_TIMEOUT

Status
Nicht offen für weitere Antworten.

Kr0e

Gesperrter Benutzer
Hi, ich habe neulich mal die Funktion setSoTimout bei den Sockets gefunden...
So, da habe ich mir gedacht, dass is ne Standardfunktion der Socketapi... Aber fehlanzeige...
Bei der normalen SocketApi habe ich nirgends ein FLAG namens SO_TIMEOUT gefunden.. (C++ Impl.)

Nun meine Frage: Ist diese Funktion etwas spezielles von Java ? Sprich einer Art 2. Thread, der im Hintergrund nach dem Ablauf dieser Zeit, einfach gewaltsam den Lesevorgang abbricht ?
2. FRage: Kann häufiges WEchseln dieses Wertes eine Datenübertragung verlangsamen ?
-> Ich benutze das gerade im folgenden Zusammenhang (Blocking Sockets natürlich...) : Ich lese in einem Thread zuerst mit einem Timeout von 0.. Sprich der Thread liegt solange auf Eis, bis Daten eingehen... Aber sobald die ersten Daten eingegangen sind aber noch nicht ausreichen, weil z.b. mein Header größer ist, als die eingegangen Daten, so schalte den Timeout auf 30 sekunden. Wenn mein Header vollständig ist, schalte ich zurück auf 0 und warte solange bis der nächste Request eingeht... Ist das ok, oder ist das "schelchter" Stil ?

Gruß Chris
 
T

tuxedo

Gast
Hört sich eher an an solltest du non-blocking-sockets benutzen....

Der Timeout ist nicht dazu gedacht ständig geändert zu werden damit die Programmlogik sauber läuft.

Wenn bisher zu wenig Daten eingegangen sind machst du einfach nochmal ein read() und wartest auf den Rest der Daten.

Das "warten" mit einem gesetzten Timeout zu unterbrechen macht doch im block-mode keine Sinn. Da bist du eh gezwungen Threads zu benutzen und dann ist es egal ob der eine Thread jetzt beim read() blockiert bis wieder Daten da sind.

- Alex
 

Kr0e

Gesperrter Benutzer
Ne, meine Überlegung war folgende:
Angenommen ich bekommen 4 bytes Headerdaten von einem Clienten. Aber ein Standardheader ist 8 bytes groß,
so dann warte ich natürlich bis der Rest da ist. Aber angenommen, der Client senden nun 30 sekunden nichts, dann kann das ja nur heißen, dass da iwas nicht so ganz richtig läuft... Und ich dachte halt dafür sind TIMEOUTs da...
Ich hatte mir das überlegt, um Rechenleistung zu sparen. Wenn quasi ein Client dranhängt, der zuwenig sendet (Bei meinem Protokoll wird nämlich immer ein Header erwartet) und dies innerhalb von z.b. 30 sek. nicht zuende bringt, dann belastet der ja unnötig meinen Server. So wie als wenn man zulange keine Daten sendet und man gekickt wird vom Server. Ich weiß halt nicht wie Timeouts intern funktionieren. Ist das eine SocketOption, oder ist das bei Java ein paralleler Thread der mitläuft udn bei mehr als 30 seks block quasi, ne Exception wirft...

Gruß Chris
 
T

tuxedo

Gast
wenn ein read() ansteht, und der client wegbricht, dann gibts eine IOException.

"Rechenleistung" sparst du dir in keinem Fall. Denn ein Thread der nix zu tun hat braucht keine CPU Last. Nur Ressourcen. Und wenn du nicht gerade 1000 solcher Clients hast, dann ist das vermutlich zu vernachlässigen.

Ich denke du versteifst dich da auch auf ein Problem, welches nicht so breit getreten werden muss/sollte. Entweder der Client stirbt irgendwann weg was eine IOException auslöst, oder das Paket lässt nur etwas länger auf sich warten.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Frage zum Keystore Netzwerkprogrammierung 21
E Socket Frage Netzwerkprogrammierung 6
T Frage bzgl. Socket-API Netzwerkprogrammierung 1
C Jetty 9 Non Blocking Handler Frage... Netzwerkprogrammierung 1
O log4j Appender Frage Netzwerkprogrammierung 6
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
C Frage zu Threads & Server Netzwerkprogrammierung 4
P Eine etwas andere Frage: Sicherheit Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
M allgemeine Frage zu einem Web Service Client Netzwerkprogrammierung 2
Q Frage zur Socketprogrammierung Netzwerkprogrammierung 12
D HTTP Frage zu Login & Session ID Netzwerkprogrammierung 5
D HTTP nochne frage zu http requests Netzwerkprogrammierung 6
D "Fileserver" Frage + Mit Java zugreifen Netzwerkprogrammierung 9
S Socket-Frage zu einem LAN-Spiel. Netzwerkprogrammierung 3
Helgon Socket Socket IP Frage + Tutorial/Bücher Netzwerkprogrammierung 5
C Webservice Frage Netzwerkprogrammierung 2
M RMI Code Frage: Netzwerkprogrammierung 4
C Frage zur Klasse DatagramPacket Netzwerkprogrammierung 2
S Einfache Server Frage Netzwerkprogrammierung 5
xDarkSunx Kleine Frage authentifizierung Netzwerkprogrammierung 13
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
H Input-/OutputStream Frage Netzwerkprogrammierung 6
N Frage zu JNDI Netzwerkprogrammierung 2
B Frage zu einer Lösung (RMI) Netzwerkprogrammierung 2
X FAQ Frage - Netzwerkgrundlagen - ServerSocket und Socket Netzwerkprogrammierung 4
G Netzwerk IP Frage Netzwerkprogrammierung 4
S NanoHTTPD Server frage Netzwerkprogrammierung 5
E einfache Frage: wie Fehler untersuchen mit Tomcat Netzwerkprogrammierung 5
E Einfache Frage zu servlets und netbeans 6.5 Netzwerkprogrammierung 41
N Frage/Problem mit RMI Netzwerkprogrammierung 3
K SCP und die Frage: Wie geh ich damit um? Netzwerkprogrammierung 7
K Frage zum Verhalten von SocketChannel.write(.) Netzwerkprogrammierung 9
G Frage zu Serversocket-Beispiel aus der FAQ Netzwerkprogrammierung 17
A Frage zur Verschlüsselung mit CipherInputStream Netzwerkprogrammierung 7
H Frage zu RMI Netzwerkprogrammierung 4
5 Grundlegende Design-Frage zu Webservices Netzwerkprogrammierung 16
C Frage zur ipcam WVC54GC von linksys ? Netzwerkprogrammierung 1
ven000m Mittlere Wartezeit Frage Netzwerkprogrammierung 5
T Frage bei Irc Verbindung Netzwerkprogrammierung 10
ven000m Frage aus einer mündl. Prüfung - wer kennt die Antwort? Netzwerkprogrammierung 6
S Serveranfrage - allgemeine Frage Netzwerkprogrammierung 2
ven000m Thread Frage Netzwerkprogrammierung 11
D Frage: Buffered Reader --> Wie komm ich an die Daten (Byt Netzwerkprogrammierung 3
H Frage zur Performance Netzwerkprogrammierung 10
flashfactor Frage zu HTML-Response Netzwerkprogrammierung 4
S GEHT DAS? - Nur eine Frage! (Printer Port direkt ansteuern?) Netzwerkprogrammierung 4
K Frage zu Net Send Netzwerkprogrammierung 7
G Frage zu JNDI / RMI Netzwerkprogrammierung 4
A ServerSocket prinzipielle Frage Netzwerkprogrammierung 5
M generelle Frage zum Versenden Netzwerkprogrammierung 4
L Frage nach Socket Netzwerkprogrammierung 4
E frage zu streams Netzwerkprogrammierung 2
Luma Verschiedene Frage zu nem Netzwerkprog Netzwerkprogrammierung 6
G einfache Frage zu ServerSocket ... Netzwerkprogrammierung 5
E Socketverbindung über das Internet - Timeout? Netzwerkprogrammierung 28
P Client Timeout auffangen Netzwerkprogrammierung 2
Iron Monkey Timeout von connect Netzwerkprogrammierung 4
S socket timeout clientseitig Netzwerkprogrammierung 2
MQue Inputstream Timeout Netzwerkprogrammierung 2
G Webserivce - Timeout in Axis - Unterschiede SO_Timeout. Netzwerkprogrammierung 3
G Timeout bei UNC-Pfaden Netzwerkprogrammierung 2
DEvent Socket und Timeout Netzwerkprogrammierung 3
T Timeout eines KSOAP-Calls Netzwerkprogrammierung 5
E Möglichkeit zum Timeout eines Process Netzwerkprogrammierung 7
P Socket Timeout ? Netzwerkprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben