@Dark
Erst mal vielen Dank für den Hinweis.
Ist wenigstens schon mal ein Anhalt wo man schauen muss!
Allerdings habe ich das bis jetzt nicht zum Laufen gebracht.
So mal am Rande bemerkt: Ich kann es einfach nicht begreifen, wie man als Entwickler einer Programmiersprache (Hier geht es um den "Powerbasic Console Compiler" NICHT um Purebasic) einen Befehlssatz für den Zugriff auf TCP/IP "bauen" kann der es nicht ermöglicht die Anzahl der empfangenen Bytes festzustellen. Für den Zugriff auf die normalen seriellen Schnittstellen existiert dieser Befehl doch auch.
Die äquivalente Form in C wäre meines Wissens nach "Anzahl = RECV...)"
So aber nun mal Butter bei die Fische:
Eine Suche mit Google (Powerbasic %FIONREAD) ergab 8 !!! absolut unbrauchbare Ergebnisse!
z. B. so etwas hier
Code: Alles auswählen
' Get the socket handle for windows
hSocket = FILEATTR(hSock, 2)
' Ask how many bytes are available
Result = ioctlsocket(hSocket, %FIONREAD, BytesAvail)
Kein Datentyp angegeben und nach dem was ich bis jetzt gefunden habe ist "BytesAvail" doch eigentlich ein Zeiger und keine Variable.
Der Autor behauptet allen Ernstes das das funktionieren würde. Das lässt noch nicht mal kompileren!
Laut Microsoft sieht die Funktion so aus:
Code: Alles auswählen
int ioctlsocket(
__in SOCKET s,
__in long cmd,
__inout u_long *argp
);
Wenn ich das richtig verstanden habe dann ist der Rückgabewert ein "Integer" (Was für ein Integer 16bit? 32bit? ????bit?)
Was da zurückgegeben wird wissen die Götter.
Was ist SOCKET s ? Ein String (wohl kaum) soll wohl dieser geheimnisvolle "HANDLE" sein bei dem ich bei Powerbasic auch nirgens SICHER eine Auskunft darüber bekomme wie man von der mit "FREEFILE" vergebenen Nummer auf den "HANDLE" kommt. Ob das in dem oberen Beispiel stimmt? Keine Ahnung!
long cmd da vermute ich mal, das hier die Konstante die das Kommando "%FIONREAD" repräsentiert hin kommt. Auch hier weiß man nicht was mit "long" gemeint ist (unsigned / signed / trallala ...)
u_long *argp da vermute ich mal (bestätigt durch dein Beispiel) das hier ein Adresszeiger auf eine Variable vom Typ "mer waases net, mer forscht noch" hinkommt in der dann (so Gott will) die Anzahl der Zeichen die empfangen wurden stehen soll.
Hab nun stundenlang alles mögliche ausprobiert - Es kommt immer nur NULL.
Hab langsam die Nase voll von diesem SCHWACHSINN!
Gruß
Daffy
PS. Warum ich diese Frage nicht im PowerBasic Forum stelle?! Nun, da habe ich 3 Tage nach der Anmeldung noch immer keine Freischaltung der Anmeldung bekommen!