lesen Wenn ich mSocket.setSoTimeout(1000);
stelle ichErste Operation timed Ausnahme heraus Buchse
java.net.SocketTimeoutException erhalten: Lesen
nach Wartezeit von einer Sekunde auf mSocket.getInputStream().read()
der erwartet wird, abgelaufen.
Aber, wenn ich mSocket.setSoTimeout(0);
ich
java.net.SocketException erhalten: Operation
nach etwa einer Minute (55 Sekunden in den meisten meiner Läufe) Zeitüberschreitung Warte das ist rätselhaft.
Ich habe versucht, sysctl TCP-Einstellungen auf meinem Mac OS El Capitan ohne Erfolg zu erhöhen. Wenn diese Einstellungen das Zeitlimit auf ungefähr eine Minute beschränkten, hätte ich die gleiche Auszeit-Ausnahme wie zuvor erhalten. Was ist diese Zeitüberschreitung der Operation?
Edit: Es ist wahrscheinlich erwähnenswert, dass ich absichtlich das Netzwerk mit pfctl herunterbringe und da ich websockets über tcp verwende, erwarte ich, dass die Verbindung bei einem großen Timeout nicht unterbrochen wird und der Fluss fortgesetzt wird, sobald ich das Netzwerk hochbringe Noch einmal.
Der Stack-Trace für beide Ausnahmen ist die gleiche, dh
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at java.net.SocketInputStream.read(SocketInputStream.java:203)
at org.jwebsocket.kit.WebSocketProtocolAbstraction.protocolToRawPacket(WebSocketProtocolAbstraction.java:220)
Wurden gerade Sendevorgänge ausgeführt, wenn Sie das Netzwerk abschneiden? – EJP
Ja, wahrscheinlich, da ich 1,5 msgs pro Sekunde sende. – user3740387