TCP/IP mit DOS und WDosX |
|
jackkcg
站務副站長 ![]() ![]() ![]() ![]() ![]() 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
http://www.dwp42.org/dwp/whitepapers/tcpip/index.html
<!DOCTYPE HTML PUBLIC "-//SoftQuad Software//DTD HoTMetaL PRO 5.0::19981217::extensions to HTML 4.0//EN" "hmpro5.dtd">
<HTML>
<HEAD>
<TITLE>TCP/IP mit DOS und WDosX</TITLE>
</HEAD> <BODY>
TCP/IP mit DOS und WDosXvon Immo Wache © 2001-08-13e-Mail: immo.wache@dwp42.org www: http://www.dwp42.org Dieser Text kann frei weitergeben werden solange der Text unverändert bleibt. Kommentare und Korrekturen bitte an den Autor. 1. EinleitungDOS ist bekanntlich älter als der Internet-Boom und daher leider nicht von Hause aus für die Verwendung von TCP/IP Anwendungen vorbereitet. Es existieren aber zum Glück eine Reihe von Lösungen, um diesem Mangel Abhilfe zu leisten. So liefert Microsoft für MS-DOS einen zusätzlichen TCP/IP Protokollstack mit. Im Internet finden sich auch weitere kommerzielle Lösungen, sowie Freeware- und Shareware-Programme. Das große (oder zumindest mein großes) Problem dabei ist die Verfügbarkeit einer vernünftigen Dokumentation der API, um auch von eigenen Delphi-WDOSX-Programmen aus auf den TCP/IP-Stack zugreifen zu können.Nach längeren Recherchen und etlichen Versuchen bin ich auf dem Freeware-Sektor fündig geworden, und habe dort eine preiswerte und funktionsfähige Lösung gefunden, die allen meinen Anforderungen gerecht wird. Damit auch Anwender, die nicht an WDOSX interessiert sind, von den folgenden Ausführungen einen Nutzen ziehen können, werde ich zunächst auf die TCP/IP-Architektur unter DOS eingehen, wie sie für die meisten Freeware-Applikationen unter DOS verwendet wird. 2. Eine offene TCP/IP-Architektur für DOSBasis für den Anschluß eines DOS-Rechners an das Internet oder auch ein lokales Intranet sind überlicherweise Ethernet-Karten und Modems. Bekanntlich existiert hierbei eine bunte Vielfalt unterschiedlicher Fabrikate und Bauformen. Um diese auf einen gemeinsamen Nenner zu bringen bedient man sich eines sogenannten Packet Drivers, der die Verbindung zwischen der Hardware und den darüberliegenden Programmen herstellt. Packet Driver besitzen ein standardisiertes API Interface und werden üblicherweise mit allen marktüblichen Ethernet-Karten mitgeliefert. Sollten sie diese Treiberdiskette nicht mehr besitzen, so finden sich bei Crynwr [1] auch etliche freie Packet Driver für die unterschiedlichsten Netzwerkkarten.Der Packet-Driver dient eigentlich nur für die Kommunikation über das Ethernet-Protokoll, es existieren aber auch CSLIP und PPP Packet Driver, die für die Anbindung eines Hayes kompatiblen Modems (mit den berühmten AT-Befehlen) verwendet werden können, und den übergeordneten Programmen eine Ethernet-Verbindung vorzugaukeln. Packet-Driver werden immer als TSR-Programme geladen, d.h. nach Ausführung des Loaders verbleiben diese Programme resident im Hauptspeicher des Rechners und überwachen ständig die Ethernet-Verbindung. Oberhalb des Packet-Drivers muss nun der eigentliche TCP/IP-Stack folgen. Hierfür existieren grundsätzlich zwei Lösungen:
Damit ergibt sich folgendes Bild für die Architektur der TCP/IP-Kommunikation (Bild 1). Bild 1: Offene TCP/IP Architektur unter DOS An dieser Stelle muss darauf hingewiesen werden, dass sich diese offene TCP/IP Architektur leider nicht mit der proprietären TCP/IP-Lösung von Microsoft und auch nicht mit der Netzwerkerweiterung von Windows 3.11 für Windows-Netzwerke gleichzeitig betreiben lässt. Hier gilt es also sich zu entscheiden, oder eine entsprechende Auswahl des Treibermodells über eine Batch-Datei vorzunehmen. 3. Installation des Packet DriversNach erfolgreicher Installation der Ethernet-Karte im PC sollte der zugehörige Packet Driver zweckmäßigerweise mittels der AUTOEXEC.BAT geladen werden. Hierfür empfiehlt es sich, eine separate Batch-Datei aufzurufen, in die später auch der TCP/IP-Treiber mit eingebunden werden kann. Diese Batch-Datei (TCPIP.BAT) und alle zugehörigen netzwerkspezifischen Programme sollten der Übersicht halber in einem eigenen Ordner (z.B. TCPIP) untergebracht werden (Bild 2).Bild 2: Inhalt des Ordners C:\TCPIP Für diesen ersten Schritt sind folgende Dateien relevant:
Bei mir lautet dieser Eintrag für eine NE2100 kompatible Karte in TCPIP.BAT: Der Parameter 0x7E bestimmt den Software-Interrupt, über den der Packet Driver von übergeordneten Programmen angesprochen wird.(im Bereich 0x60 bis 0x7e) Er kann bei einigen Packet Drivern auch weggelassen werden, dann sucht der Packet Driver selbständig einen geeigneten freien Interrupt.@echo off c:\tcpip\NE2100 0x7e 0x9 0x320 0x5 Der Aufruf dieser Batch-Datei erfolgt in der AUTOEXEC.BAT sodass der Protokoll-Stack beim Start des Rechners automatisch geladen wird. Die entsprechende Zeile in AUTOEXEC.BAT sollte damit wie folgt lauten: Nach einem Neustart des DOS-Rechners sollte der Packet Driver nun geladen werden, Meldungen beim Start geben dabei Aufschluss über eventuelle Konfigurationsfehler.... CALL C:\TCPIP\TCPIP.BAT ... Viele TCP/IP-Programme für DOS (nach der obigen Einteilung die Variante a), welche einen eigenen TCP/IP-Stack mitbringen, können damit nun bereits ausgeführt werden.Packet driver for an NE2100, version 11.3.1 Packet driver skeleton copyright 1988-93, Crynwr Software. This program is freely copyable; source must be available; NO WARRANTY. See the file COPYING.DOC for details; send FAX to 1-315-268-9201 for a copy. System: [345]86 processor, ISA bus, Two 8259s Packet driver software interrupt is 0x7E (126) Interrupt number 0x9 (9) I/O port 0x320 (800) DMA number 0x5 (5) My Ethernet address is 00:C0:36:00:0B:A6 Soll der Rechner nicht mit einer Ethernet-Karte sondern über ein Modem direkt mit dem Internet verbunden werden, ist ein entsprechender SLIP oder PPP Packet Driver erforderlich [3]. SLIP wird hauptsächlich für die Verbindung mit UNIX-Servern verwendet, während PPP eine neuere Entwicklung darstellt, die vor allem für Windows-Clients verwendet wird. Es lassen sich natürlich auch DOS- und Linux-Rechner über dieses Protokoll anbinden. Im Download-Bereich des DNS-Bazaar-Projekts finden sich hierfür verschiedene Treiberprogramme, die für unterschiedliche ISP geeignet sind. Diese Programme stammen von [4, 5, 6]. Dabei sind oftmals entsprechende Versuche erforderlich, bis alles läuft. Erfolg hatte ich bei meinen ISP's (T-Online und Viag Intercom) mit dem Programm DOSPPP Version 0.6 [6], dort allerdings nur mit dem Programmen aus dem enthaltenen Ordner CHAPSUPP. Eine genaue Anleitung zur Konfiguration des Treibers ist in dem Paket enthalten, nur bei meinem T-Online User Name gab es Probleme, da es ein ‚#'-Zeichen enthält. Die Lösung besteht darin, den User Name in doppelte Anführungszeichen zu setzen. Schlechte Aussichten bestehen, falls sie eine ISDN-Karte oder ein USB-Modem verwenden möchten. Hierfür gibt es bisher leider nur wenige oder gar keine Lösungen. Falls Sie hier jedoch zwischenzeitlich eine funktionierende Lösung finden sollten, wäre ich über entsprechende Infos sehr dankbar. 4. Installation des TCP/IP DriversUm Programme ohne eigenen TCP/IP-Stack verwenden zu können (Variante b), muss dieser als zusätzliches TSR-Programm resident geladen werden. Diese Variante ist auch für Delphi WDosX-Programme erforderlich. Zu diesem Zweck muss das Programm NTCPDRV.EXE [2] über die Batch-Datei TCPIP.BAT geladen werden. NTCPDRV.EXE kann mit unterschiedlichen Parametern geladen werden, um die IP-Adresse, die Netzmaske und das Standard-Gateway festzulegen. Bei mir sieht die Batch-Datei hierzu wie folgt aus:Zur Bedeutung der einzelnen Parameter sollten Sie die mitgelieferte README-Datei konsultieren. Auch hier müssen Sie eventuell ein wenig mit den Parametern experimentieren. Es ist auch möglich NTCPDRV.EXE ohne Parameter aufzurufen, dann werden die IP-Werte über das BOOTP-Protokoll von einem im Netzwerk vorhandenen DHCP-Server ermittelt. Diese letzte Variante bietet sich auch bei den PPP-Packet Drivern für den Modem-Anschluss an einen ISP an, da hierbei die IP-Parameter dynamisch vergeben werden.@echo off c:\tcpip\NE2100 0x7e 0x9 0x320 0x5 c:\tcpip\NTCPDRV -ip=192.168.0.3 -netmask=255.255.255.0 -gateway=192.168.0.1 -dns=192.168.0.4 2 2 4 Nach einem weiteren Neustart des DOS-Rechners sollte der TCP/IP Treiber nun geladen werden, auch hier geben die Meldungen beim Start wieder Aufschluss über eventuelle Konfigurationsfehler. Der TCP/IP Treiber zeigt hierbei auch die aktuell verwendeten IP-Parameter an. Das ist vor allem für die BOOTP-Variante zweckmäßig. Trumpet TCP version 3.1 Interrupt = 0x60 Copyright (c) 1992 by P.R.Tattam, all rights reserved Installing TCP NE2100 packet driver version 11 2 Attempting BOOTP type 5. Den TCP/IP-Stack testenNachdem der TCP/IP-Stack installiert wurde und die entsprechenden Meldungen beim Booten des Rechners keine Fehler mehr enthalten, kommt nun der spannende Moment, wo wir unsere TCP/IP-Verbindung testen können. Zu diesem Zweck beginnen wir mit dem bekannten Ping-Programm, welches mit dem TCP/IP-Treiber mitgeliefert wird. Dieses DOS-Programm heißt hier PING2.EXE und als Parameter wird der gewünschte Zielrechner angegeben. Um bei mir also das Gateway anzupingen, ist folgender Aufruf notwendig:Das Ping Programm versendet nun im Sekundentakt ICMP-Pakete an den Zielrechner und zeigt die dabei zurückgesendeten Pakete und ihre Laufzeit an. Das Programm wird über dieC:\TCPIP>ping2 192.168.0.1 Wenn sie eine Internet-Verbindung haben, können Sie auch einen Rechner im Internet anpingen, z.B.:Trumpet PING - Copyright (c) 1992 by P.R.Tattam, all rights reserved Trying 192.168.0.1 192.168.0.1 id= 12 rtt = 0.000 period = 1000 Hier sollte die Laufzeit dann natürlich etwas länger dauern.C:\TCPIP>ping2 dwp42.org Das zweite nützliche Programm, welches mit dem TCP/IP Treiber mitgeliefert wird, ist der FTP-Client FTP2.EXE. Hiermit können Sie Dateien über das Netzwerk senden und empfangen. Beim Aufruf muss der gewünschte FTP-Server mit angegeben werden: Melden Sie sich mit dem Nutzernamen ANONYMOUS und ihrer e-Mail Adresse als Passwort an. Geben Sie den Befehl HELP ein, um eine Übersicht der verfügbaren Kommandos zu erhalten. Nun können Sie im FTP-Archiv von dwp42.org stöbern und nach belieben die einzelnen Dateien herunterladen. Das FTP-Programm wird mit dem Kommando QUIT wieder verlassen.C:\TCPIP>ftp2 ftp.dwp42.org Ein weiteres nützliches Programm ist der Telnet-Client TEL2.EXE. Hiermit können Sie eine Terminal-Sitzung bei einem entfernten UNIX-Rechner ausführen. Dazu müssen Sie natürlich einen entsprechenden Account auf diesem Rechner besitzen. Es werden noch einige weitere Internet-Programme mit dem TCP/IP-Treiber mitgeliefert. Vielleicht finde Sie damit noch mehr interessante Anwendungsmöglichkeiten. 6. Dateitransfer mit FILELOADWenn Sie mit Delphi und WDosX eigene Programme entwickeln, die nur unter reinem DOS lauffähig sind, ist ein seperater DOS-Rechner zusätzlich zum Entwicklungshost unter Windows natürlich sehr zweckmäßig. Um die Programmversionen vom Windows-Rechner zum DOS-Rechner zu übertragen, ist die FTP-Lösung leider recht umständlich in der Bedienung.Aus diesem Grund habe ich eine einfachere Download-Möglichkeit für Programme und Dateien entwickelt welche auf der DOS-Seite z.B. in eine kleine Batch-Datei eingebunden werden kann. Diese Lösung ist Freeware und Sie können sie natürlich gerne mitnutzen. Auf dem Windows-Rechner muss dazu das Programm FILESERV.EXE als Server gestartet werden. Auf der DOS-Seite wird die Übertragung einer Datei mit folgendem Befehl ausgelöst: Hierbei muss als erster Parameter die IP-Adresse des Servers angegeben werden. Damit kann man nun eine einfache Batch-Datei schreiben, die das zu testende Programm vom Server lädt und z.B. anschließend gleich ausführt. Bei mir heißt diese Datei GO.BAT:C:\TCPIP>fileload 192.168.0.2 filename.ext Damit kann ein Testzyklus für zu prüfende Programme über das Kommando GO ausgeführt werden. Das ist besonders praktisch, wenn das Programm dabei den Rechner häufig zum Absturz bringt ;-)@echo off fileload 192.168.0.2 project1.exe project1.exe Natürlich ist der Quellcode des Programms FILELOAD.EXE auch recht nützlich, um die Programmierung des ABI-Interface für TCP-Verbindungen näher kennen zulernen.C:\TEST>go Das Programm FILELOAD steht mit Quellcode unter [7] zur Verfügung. Das Windows-Programm FILESERV.EXE ist, natürlich auch mit Quellcode, unter [8] verfügbar. 7. Integration von FILESERV in die Delphi IDEFür die oben dargestellte Anwendung von FILESERV.EXE bei der Delphi WDosX Programmentwicklung ist es zweckmäßig, das Programm mit in das Tools-Menü der Delphi IDE aufzunehmen. Gehen Sie dafür wie folgt vor:
Bild 3: Eingabewerte für das Tool File-Server Nun können Sie den Fileserver über das Hauptmenü der Delphi-IDE starten. Wählen Sie einfach den Menüpunkt Tools|File server oder kurz mittels 8. Socket-Programmierung mit Delphi und WDosXFür die einfache und komfortable TCP Socket-Programmierung unter DOS stehen in der DWPL-Bibliothek die Komponenten TwdxClientSocket und TwdxServerSocket zur Verfügung. Diese Komponenten können fast genau benutzt werden, wie die Windows Socket-Komponenten TClientSocket und TServerSocket (Diese Komponenten sind leider nur in der Professional-Version von Delphi enthalten). Die einzige Einschränkung besteht darin, dass unter DOS nur non-blocking Sockets zur Verfügung stehen, d.h. die Socket-Funktionen werden unmittelbar beendet, auch wenn die übergebenen Daten noch nicht über die Socket-Verbindung gesendet bzw. empfangen wurden. Die Rückmeldung erfolgt über entsprechende Ereignisse, genauso wie eventuelle Fehlermeldungen.Zur Verwendung dieser Komponenten sollten Sie sich die Hilfeseiten von Delphi sowie die im Verzeichnis $(DELPHIX)\Projects\dwpl\demos\internetdemos\sockets enthaltenen Beispielprogramme studieren. Damit diese Programme ausgeführt werden können, müssen einige Konfigurationsdateien auf dem DOS-Rechner verfügbar sein, da bisher leider noch keine DNS-Namensauflösung existiert. Für diese wichtige Thema existiert auf dem DWP-Bazaar [9] ein entsprechendes Projekt. Mitarbeit ist hier natürlich sehr willkommen, Sie sind dazu herzlich eingeladen :-) 9. DOS Konfigurationsdateien im Ordner ETCDie Konfigurationsdateien für TCP/IP habe ich in Analogie zu den Konfigurationsdateien bei Linux angelegt. Sie müssen unter DOS im Verzeichnis \etc auf dem selben Laufwerk liegen, wo auch das Programm ausgeführt wird. Im allgemeinen also unter c:\etc bzw. a:\etc. In diesem Verzeichnis sind die Konfigurationsdateien nach Bild 4 erforderlich.Bild 4: Die TCP/IP Konfigurationsdateien unter DOS Die Datei HOSTNAME enthält den Namen des Rechners sowie den Domain-Namen. Bei meinem DOS-Rechner also z.B. wie folgt: In der Datei Services werden den verwendeten Netzwerkdiensten die zugehörigen Protokolltypen (TCP oder UDP) sowie die Port-Adressen zugeordnet. Diese können von einem Linux- oder Windows-System übernommen werden. Hier ein Auszug aus meiner SERVICES Datei:# file c:\etc\hostname # # contains the full hostname of the host himself # berlin.int.europa.de Die Datei HOSTS enthält die Zuordnung der für das System bekannten Hosts mit ihren IP-Adressen. Da bisher noch keine DNS-Namensauflösung unter Delphi und WDosX implementiert ist, stellt dies den einzigen Weg dar, im Anwendungsprogramm Host-Namen zu verwenden. Ansonsten muss vorläufig immer die IP-Adresse verwendet werden. Meine HOSTS-Datei ist z.B. wie folgt aufgebaut:# file c:\etc\services # # This file lists common used services and there port # numbers corresponding to RFC 1060 (Assigned Numbers). # # Format: # # Das sind vorläufig alle Informationen, die ich zum Thema TCP/IP unter DOS und Delphi WDosX zusammengetragen habe. Sollten Ihnen einige Punkte noch unklar sein, so schicken Sie mir doch einfach eine e-Mail an:# file c:\etc\hosts # # This file contains the mappings of IP addresses to # host names. Each entry should be kept on an individual # line. The IP address should be placed in the first # column followed by the corresponding host name. # The IP address and the host name should be separated by # at least one space. Nicknames for host names may follow # the full host name, seperated by at least one space. # # Additionally, comments (such as these) may be inserted # on individual lines or following the machine name # denoted by a '#' symbol. # # For example: # 127.0.0.1 localhost # self 192.168.0.1 paris.int.europa.de paris # win 192.168.0.2 amsterdam.int.europa.de amsterdam # win 192.168.0.3 berlin.int.europa.de berlin # dos 192.168.0.4 oslo.int.europa.de oslo # linux immo.wache@dwp42.orgUnd nun viel Erfolg mit DOS und TCP/IP. Quellenverzeichnis und Links[1] Crynwr Software: Open Source Packet drivers; http://www.crynwr.com/[2] Trumpet "Internet Tools for DOS": Trumpet TCP/IP ABI; http://www.trumpet.com.au/dosapps/home.html [3] SLIP & PPP for DOS: Packet driver FAQ; http://www.citilink.com/faq/connecting/dos/index.html [4] Trumpet Slipper: SLIP Packet driver; ftp://ftp.trumpet.com.au/slipper/slippr15.zip [5] LSppp - LadSoft PPP Driver for DOS Homepage: DOS PPP Packet driver; http://members.tripod.com/~ladsoft/lsppp/ [6] Toni Lopez' Homepage: DOS PPP Packet driver; http://personal.redestb.es/tonilop/ [7] FTP-Server von DWP: Programm FileLoad und Source; http://www.dwp42.org/pub/dwp/bazaar/dns/tools/FileLoad.zip [8] FTP-Server von DWP: Programm FileServ und Source; http://www.dwp42.org/pub/dwp/bazaar/dns/tools/FileServ.zip [9] DWP Bazaar Project DNS: Domain Name Service Resolver; http://www.dwp42.org/bazaar/dns/ </BODY> </HTML>
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |