Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File8.7.9.3 RSDAEMON_MSG TOS Der RSDAEMON ist eine parallel laufende Applikation, die die Aufgabe des Resolvers per AES-Message übernimmt. Sinn ist quasi ein nichtblockierendes gethostbyname(), allerdings liefert der RSDAEMON nur eine IP, kein ganzes hostent-struct. Der RSDAEMON wird normalerweise automatisch von IConnect gestartet und beendet. Nutzung: Per appl_find("RSDAEMON") ist die App-ID zu ermitteln. Im Fehlerfall sollte man auf das blockierende gethostbyname() zurückgreifen und nur, wenn garnicht anders möglich, stattdessen mit Fehlermeldung abbrechen. Nun kann dem RSDAEMON eine AES-Message geschickt werden: #include <rsdaemon.h> pbuf[0]=RSDAEMON_MSG pbuf[1]=<eigene App-ID> pbuf[2]=0 pbuf[3]=RSD_REQUEST_IP pbuf[4]=<eigene frei wählbare ID, um die Antwort zuordnen zu können> pbuf[5/6]=<Zeiger auf den String, der den Namen des Hosts enthält> (Ggf. Speicherschutz beachten!) Der RSDAEMON liefert eine Antwort folgender Form: pbuf[0]=RSDAEMON_MSG pbuf[1]=<RSDAEMON-ID> pbuf[2]=0 pbuf[3]=RSD_IP_UNKNOWN = IP konnte nicht ermittelt werden. Das kann verschiedene Ursachen haben (User hat keinen DNS eingetragen, DNS kenn den Host nicht etc.) pbuf[4]=<hier wird die ID aus dem Request zurückgeliefert> oder: pbuf[3]=RSD_IP_FOUND pbuf[4]=<hier wird die ID aus dem Request zurückgeliefert> pbuf[5/6]=<IP des Hosts als ulong> Und hier noch die RSDAEMON.H: #ifndef __RSDAEMON__ #define __RSDAEMON__ #define RSDAEMON_MSG 0x995 #define RSD_REQUEST_IP 1 #define RSD_IP_FOUNDIP 1 2 #define RSD_IP_UNKNOWN 3 #endif