SOCKET-Plugin V0.11a                                                 07.08.1998
===============================================================================
(C) 1998 StarSys - Jrgen Koneczny

	August-Gabler-Weg 2a
	D-89340 Leipheim
	Telefon: 08221/7523
	EMail: zulu@camelot.de
	http://www.camelot.de/~zulu


INSTALLATION
------------

SOCKET.plg in den PLUGIN-Ordner des MagiC Scripters kopieren.


VORAUSSETZUNGEN
---------------

SOCKET.plg bentigt den MagiC Scripter, IConnect ab V1.5 und ein Multitasking-
Betriebssystem (N.AES oder vorzugsweise MagiC ab V4.5).


BEMERKUNGEN
-----------

Da IConnect und damit auch SOCKET-Plugin - im Gegensatz zu anderen
TCP/IP-Stacks - auf der Socket-Schnittstelle basiert, gibt es ausreichend 
Literatur. Empfehlen kann ich Internet intern von Data Becker.

Unter Rckgabe meint diese Dokumentation immer den Ergebnisstring, also
msg[5+6] bei GS_ACK. Dies entspricht der tatschlichen Rckgabe der Kommandos
in MagiC Scripter.

Unter 'errno' wird angegeben, was die Kommandos in msg[7] zurckliefern. Dieser
Wert kann in MagiC Scripter ber errno abgefragt werden. Wenn errno ungleich 0 
ist (genauer gleich 2), dann ist im Socket-Plugin bei der Ausfhrung des 
Kommandos, das bei korrekter Ausfhrung keinen als Zahl interpretierbaren
Ergebnisstring liefert, ein Fehler aufgetreten, der dann durch die Rckgabe 
genauer spezifiert ist:

  "-1":    (=ERROR)
 "-39": insufficient memory (=ENSMEM)
"-100": not enouph arguments
"-300": Socket operation on non-socket (=ENOTSOCK)
"-301": Destination address required (=EDESTADDRREQ)
"-302": Message too long (=EMSGSIZE)
"-303": Protocol wrong type for socket (=EPROTOTYPE)
"-304": Protocol not available (=ENOPROTOOPT)
"-305": Protocol not supported (=EPROTONOSUPPORT)
"-306": Socket type not supported (=ESOCKTNOSUPPORT)
"-307": Operation not supported (=EOPNOTSUPP)
"-308": Protocol family not supported (=EPFNOSUPPORT)
"-309": Address family not supported by protocol (=EAFNOSUPPORT)
"-310": Address already in use (=EADDRINUSE)
"-311": Cannot assign requested address (=EADDRNOTAVAIL)
"-312": Network is down (=ENETDOWN)
"-313": Network is unreachable (=ENETUNREACH)
"-314": Network dropped conn. because of reset (=ENETRESET)
"-315": Software caused connection abort (=ECONNABORTED)
"-316": Connection reset by peer (=ECONNRESET)
"-317": Socket is already connected (=EISCONN)
"-318": Socket is not connected (=ENOTCONN)
"-319": Cannot send after shutdown (=ESHUTDOWN)
"-320": Connection timed out (=ETIMEDOUT)
"-321"; Connection refused (=ECONNREFUSED)
"-322": Host is down (=EHOSTDOWN)
"-323": No route to host (=EHOSTUNREACH)
"-324": Operation already in progress (=EALREADY)
"-325": Operation now in progress (=EINPROGRESS)
"-326": Operation would block (=EWOULDBLOCK)


KOMMANDOS
---------

accept <handle>

Nimmt eine Verbindung auf einem Socket entgegen und gibt das Handle zurck.

handle: Handle des Socket.


bind <handle> <port>

Legt die lokale Adresse, also den Port, des Sockets fest. Ist <port> <= 0 wird
ein Port zugewiesen.

handle: Handle des Socket
  port: Port


connect <handle> <addr> <port>

Veranlat eine Verbindung zu einem Host.

handle: Handle des Socket
  addr: IP-Adresse des Hosts in punkgetrennter Form
  port: Port


gethostbyname <name>

Ermittelt die IP-Adresse des Host <name> als punkgetrennte Zahlen (a.b.c.d).
Rckgabe ist Fehlercode, wenn errno gleich 2 ist.


getsockname_addr <handle>

Liefert die IP-Adresse als punktgetrennte Zahlen des Socket. Wenn 'errno' zwei ist, 
Rckgabe ist Fehlercode, wenn errno gleich 2 ist.

handle: Handle des Socket


getsockname_port <handle>

Liefert den Port des Socket.
Rckgabe ist Fehlercode, wenn errno gleich 2 ist.

handle: Handle des Socket


listen <handle> <backlog>

Bereitet den Socket auf die Entgegennahme von Verbindungen auf TCP-Ebene vor.

 handle: Handle des Socket
backlog: Anzahl der maximal entgegenzunehmenden Verbindungen fr diesen Socket.


recv <handle> <flags>

Liest den Empfangspuffer des Sockets aus.
Rckgabe ist Fehlercode, wenn errno gleich 2 ist.

handle:	Handle des Sockets
 flags: 0 (= kein Flag gesetzt), 1 (=MSG_PEEK)


sclose <handle>

Lscht den Socket.

handle: Handle des Sockets


sendto <handle> <addr> <port> <flags> <msg>

Sendet msg ber den Socket an addr, port.
handle:	Handle des Sockets
  addr: IP-Adresse des Hosts in punkgetrennter Form
  port: Port
 flags: 0 (= kein Flag gesetzt), 1 (=MSG_OOB)
   msg: zu versendende Nachricht


socket <type> <protocol>

Legt einen neuen Socket an und gibt dessen Handle zurck.

    type: 1 (=SOCK_STREAM), 2 (=SOCK_DGRAM)
protocol: 0 (=IPPROTO_IP), 6 (=IPPROTO_TCP), 17 (=IPPROTO_UDP)


sread	<handle>

Liest den Empfangspuffer des Sockets aus.
Rckgabe ist Fehlercode, wenn errno gleich 2 ist.

handle:	Handle des Sockets


swrite <handle> <msg>

Schickt msg ber den Socket.

handle: Handle des Sockets
   msg: zu versendende Nachricht


version

Gibt die Version von Socket.plg zurck.