View Full Version : TCP/IP und kein Ende
Hallo,
ich habe da mal wieder ein kleineres Problemchen.
Wir haben ein ILE RPG Server PGM um die Kommunikation via TCP/IP zu bewerkstelligen. Die Verbindung wird Client seitig aufgebaut und wir kommunizieren über einen Port (Socket) asynchron. Nun kommt es allerdings gelegentlich vor, das die Verbindung "einschläft" und nicht mehr reagiert, dann müsste ich den Socket schliessen und einen neuen "eröffnen" mittels des accepts API´s ! Gibt es eine Möglichkeit, zu prüfen ob der Socket noch "Empfangsbereit" ist? Ein API oder etwas ähnliches.
Danke schonmal im vorraus
Gruß
Jo
Frank Hildebrandt
29-03-06, 12:48
Nur für den Fall, dass hier keiner antwortet solltest Du Deine Frage im Forum "iSeries Network" mal posten. Der Moderator dort ist Scott Klement. Der kennt sich wirklich gut mit Socket Programmierung aus und der wird Dir mit 100 prozentiger Sicherheit eine Antwort geben. Deine Frage musst Du dort allerdings auf Englisch posten. Aber das sollte bestimmt kein Problem sein. Hier der Link. http://www.iseriesnetwork.com/isnetforums/
kuempi von stein
29-03-06, 13:51
....Nun kommt es allerdings gelegentlich vor, das die Verbindung "einschläft" und nicht mehr reagiert, dann müsste ich den Socket schliessen und einen neuen "eröffnen" mittels des accepts API´s ! ....
Das kommt mir bekannt vor. Kenne das Phänomen zusätzlich noch über ne VPN-Verbindung. Das Problem scheint ja die (Server-)Applikation (RPG?) zu sein, die nach dem accept mit read oder was weiss ich drauf hängt.
Kann man dann überhaupt einfach nen neuen accept losjagen? Soweit wie ich mich erinnere, gabs da immer nur zwei Möglichkeiten....
1) alles wegknallen mit *IMMED und neu aufbauen oder
2) den VPN beenden und neu aufsetzen. (Hilft "meistens, aber nicht immer")
Da gibts ja auch TIME-Values die bei Inaktivität oder so greifen? Hab das nie verwirklicht...
Wenn Du ne Lösung hast, würde mich die sehr interessieren.
kuempi
Ich mache halt nur einen accept und arbeite dann sämtliche Anfragen und Antworten darüber ab (so soll es wenigstens sein ;) ) das VPN neu starten kann keine Option sein.
Hast Du Unterlagen zu der Inaktivitäts Geschichte? Sowas könnte es sein.
Das Programm selber schläft ja nicht ein (ist so´ne Art Dispatcher) sondern liest weiter DTAQ und steht auch auf recv , allerdings ist der Returncode immer -1 oder 0 :eek: was ja eigentlich darauf hindeuten sollte das was da ist, aber ....... nothing happens :mad:
kuempi von stein
30-03-06, 10:35
...Hast Du Unterlagen zu der Inaktivitäts Geschichte? Sowas könnte es sein...
nö, ich bin auf Urlaub zur Zeit. :D
Die ursprüngliche Info darüber kam aber aus der API-Beschreibung usw. von Scott Clemens. Ist jetze zu mühselig das zu klären, geht dann nächste oder übernächste Woche erst.
Trotzdem glaube ich nicht, dass das hilft.
Diese "Einschlafgeschichte" passiert ohne Sinn und Verstand, keine Logik dahinter. Manchmal auch zu Zeiten, da wo es nicht passieren sollte, weil das letzte Bit davor erst ne Minute her ist.
Aber es passiert eben auch relativ selten, so mal alle paar Wochen wo es gerade auffällt. Manchmal an zwei Tagen hintereinander, manchmal drei Wochen lang gar nicht.
Im Hinterkopf habe ich da immer noch die Telekomiker (oder wen auch immer) im Verdacht. Von Serverprogramm bis zum Client hin sind eben zu viele unkontrollierbare Komponenten.
kuempi