•  Back 
  •  Nachrichten-Liste 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
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