[NEWSboard IBMi Forum]

Thema: O-NONBLOCK

Hybrid View

  1. #1
    Registriert seit
    Jun 2002
    Beiträge
    25

    O-NONBLOCK

    Hallo Forum,

    ich bastel gerade an einer Socket Anbindung und hab eigentlich nur noch ein Problem mit der Blockungs Funktion.
    Und das treibt mich gerade in den Wahnsinn......

    Ich habe mich dabei ziemlich genau an das Tutorial von Scott Klement gehalten, weils für mich absolutes Neuland ist. Leider bekomme ich bei der Umwandlung des Programms immer den Fehler
    "Prototypaufruf kann nicht in einem Ausdruck verwendet
    werden, da er keinen Wert zurückgibt".

    Definitionen:
    D fcntl PR ExtProc('fcntl')
    D SocketDesc 10I 0 Value
    D Command 10I 0 Value
    D Arg 10I 0 Value Options(*NOPASS)

    D F_GETFL C CONST(6)
    D F_SETFL C CONST(7)

    D O_NONBLOCK C CONST(128)
    D O_NDELAY C CONST(128)
    D FNDELAY C CONST(128)

    D flags S 10I 0

    Die C-Funktion:
    int fcntl (int descriptor, int command, ...);

    und die Codierung:
    * flags = fcntl(sock: F_GETFL);
    flags = flags + O_NONBLOCK;
    * if fcntl(sock: F_SETFL: flags) < 0;
    msg = 'Blockungsfehler';
    ENDIF;

    Moniert werden immer die beiden Zeilen mit dem Sternchen davor.

    Hat jemand eine Idee was ich hier falsch mache ???

    Schon einmal Danke und Grüße
    Markus

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Hi,
    eigendlich ist die fehlermsg doch klar
    hier
    D fcntl PR ExtProc('fcntl')

    fehlt die return länge


    also

    D fcntl PR 1 ExtProc('fcntl')

    Die returngröße muß natürlich passen
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    PHP-Code:
    D fcntl           PR            10I 0 ExtProc('fcntl')
    D   SocketDesc                  10I 0 Value
    D   Command                     10I 0 Value
    D   Arg                         10I 0 Value Options
    (*NOPASS
    The fcntl() API call

  4. #4
    Registriert seit
    Jun 2002
    Beiträge
    25
    Hallo an euch beide,

    herzlichen Dank, das wars natürlich!

    Hätte ich ja durchaus auch drauf kommen können bei genauerem hinsehen
    Wäre mir aber wahrscheinlich die nächsten 100 Jahre nicht aufgefallen.

    Nochmal Danke und allen einen schönen Abend.

    Grüße
    Markus

Berechtigungen

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