[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2004
    Beiträge
    923

    sockets ile und close

    hello @all,

    habe aktuell ein Programm in der Mache, welches nach jedem gelesenen Satz (read socket) eine Antwort schickt (write socket) und danach die Verbindung erstmal wieder schliesst (close socket).
    Die Verbindung wird grundsätzlich über VPN hergestellt, so dass vermutlich gewährleistet ist, dass keine anderen als erwartete Sätze und Clients anklopfen.
    Anzahl der anklopfenden Sätze variiert sehr (manchmal nur ein Satz, manchmal mehrere hintereinander).
    Der Client bemängelt nun zu Recht die ewige closerei und den erneuten Aufbau (make socket, listen socket, accept socket, read socket, close socket) und spricht in diesem Zusammenhang von unnötigen Ressourcenverbrauch und Zeitverlust.
    Ein komplettes Redesign möchte ich mir aber sparen (Motto: never change a running system).
    Ich möchte deshalb um den Kernpunkt eine DO-Schleife legen.
    Kann ich diese nun VOR dem 'accept socket' legen oder ist es angebracht den Loop erst VOR dem 'read socket' zu platzieren?
    Und wie stark ist die Systembelastung durch diesen Loop? Kann ich diesen Punkt vernachlässigen?
    Um den Loop abzubrechen denke ich an eine Art Zeitzähler, der nach 5 oder 10 Minuten Inaktivität 'close socket' durchführt und das ganze Prozedere neu starten lässt.
    Ist das gefahrlos möglich?

    Mag sich mal bitte jemand dazu äussern?

    Danke

    kuempi

  2. #2
    Registriert seit
    Oct 2003
    Beiträge
    192
    Hi,

    Ist es immer wieder derselbe Client der sich mit deinem Programm verbindet oder sind es verschiedene ?

    Wenn die Verbindung nicht immer aktiv bleibt würde ich das accept mit in die Schleife nehmen, dann können sich mehrere auch gleichzeitig mit dem Programm connecten.(also auch der eine abgestürzte und der neuverbundene)

    Gruss

    Rince

  3. #3
    Registriert seit
    Aug 2004
    Beiträge
    923
    Zitat Zitat von Rincewind
    Hi,

    Ist es immer wieder derselbe Client der sich mit deinem Programm verbindet oder sind es verschiedene ?

    Wenn die Verbindung nicht immer aktiv bleibt würde ich das accept mit in die Schleife nehmen, dann können sich mehrere auch gleichzeitig mit dem Programm connecten.(also auch der eine abgestürzte und der neuverbundene)

    Gruss

    Rince
    hello,

    es ist immer derselbe client.
    von daher tendiere ich persönlich auch dazu, erst VOR dem 'read socket' einzusetzen.
    den loop VOR 'accept socket' zu setzen, wäre nur nice gewesen.
    ich vermute aber aus der handbuchbeschreibung, dass der socket dabei nicht 'überschrieben' wird, sondern ein neuer angelegt wird und das system dadurch dichtgemacht wird....

    gruss

    k.

  4. #4
    Registriert seit
    Oct 2003
    Beiträge
    192
    Klar, er akzeptiert dann einen neuen Client..

    Man muss aber auch beachten, dass die Timeout Zahl nach Abbruch bei einem Programm durchaus länger sein kann.

    Achte mal auf WRKTCPSTS *CNN mit dem entsprechenden Port.
    Es kann sein dass ein alter abgebrochender client dann deinen server beschäftigt hält, obwohl du das gar nicht mehr willst.

    Gruss

    Rince

  5. #5
    Registriert seit
    Aug 2004
    Beiträge
    923

    klappi

    Zitat Zitat von Rincewind
    Klar, er akzeptiert dann einen neuen Client..

    Man muss aber auch beachten, dass die Timeout Zahl nach Abbruch bei einem Programm durchaus länger sein kann.

    Achte mal auf WRKTCPSTS *CNN mit dem entsprechenden Port.
    Es kann sein dass ein alter abgebrochender client dann deinen server beschäftigt hält, obwohl du das gar nicht mehr willst.

    Gruss

    Rince
    mhh...
    nach dem xsten anlauf scheint es nun zu funktionieren.
    zumindest bleibt das proggi nicht mehr hängen.
    der close vom clientsocket mit anschliessenden neu accept verursacht auch keine wartezeit, obwohl ich keine lebensdauer mitgegeben habe.
    manchmal findet ein blindes huhn doch noch ein korn.

    ich glaube, der tag wird doch noch schön


    danke für deine anteilnahme

    k.

Similar Threads

  1. ILE RPG / SQL Füllen einer Feldgruppe
    By homue in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-07-07, 16:47
  2. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  3. ILE Umwandlung per FNDSTRPDM
    By horni in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-12-06, 18:51
  4. DDS in ILE RPG
    By Squall in forum IBM i Hauptforum
    Antworten: 82
    Letzter Beitrag: 19-10-06, 15:37
  5. Return ILE RPG
    By Squall in forum IBM i Hauptforum
    Antworten: 31
    Letzter Beitrag: 28-09-06, 17:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •