DE19605093B4 - Verfahren und Vorrichtung zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und jedem einer Mehrzahl von Server-Computersystemen - Google Patents

Verfahren und Vorrichtung zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und jedem einer Mehrzahl von Server-Computersystemen Download PDF

Info

Publication number
DE19605093B4
DE19605093B4 DE19605093A DE19605093A DE19605093B4 DE 19605093 B4 DE19605093 B4 DE 19605093B4 DE 19605093 A DE19605093 A DE 19605093A DE 19605093 A DE19605093 A DE 19605093A DE 19605093 B4 DE19605093 B4 DE 19605093B4
Authority
DE
Germany
Prior art keywords
connection
server
computer system
data structures
client computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19605093A
Other languages
English (en)
Other versions
DE19605093A1 (de
Inventor
Alan Ft. Collins Silverstein
William G. Ft. Collins Golson
Munir Ft. Collins Mallal
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE19605093A1 publication Critical patent/DE19605093A1/de
Application granted granted Critical
Publication of DE19605093B4 publication Critical patent/DE19605093B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

Verfahren zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem (1, 22) und jedem einer Mehrzahl von Server-Computersystemen (23) gekennzeichnet durch folgende Schritte
A. Bereitstellen (50) einer Mehrzahl von Server-Systemdatenstrukturen (30, 40) im Client-Computersystem (1, 22), wobei jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) einem der Mehrzahl von Server-Computersystemen (23) zugeordnet ist und einen Statusanzeiger aufweist, der einen Wert speichert, der einen Verbindungszustand anzeigt, der zwischen dem Client-Computersystem (1, 22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) existiert;
B. für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), Zugreifen auf den Statusanzeiger durch das Client-Computersystem, Bestimmen, ob der Statusanzeiger eine eingerichtete Verbindung anzeigt, falls der Statusanzeiger keine Verbindung anzeigt, Versuchen, eine Verbindung zwischen dem Client-Computersystem (1, 22) und dem zugeordneten der Mehrzahl von Server-Computersystem (23) einzurichten, und Einstellen des Statusanzeigers auf einen Wert, der anzeigt, daß eine Verbindung eingerichtet wird, wobei die einzurichtende Verbindung ein Weiterstellen durch eine...

Description

  • Die vorliegende Erfindung bezieht sich auf Computersysteme, die mit anderen Computersystemen kommunizieren und insbesondere auf Verfahren und Vorrichtungen zum parallelen Einrichten und Verwalten von Verbindungen zwischen einem Client-System (Anforderungssystem) und ausgewählten Server-Systemen (Bereitstellungssystemen).
  • Die meisten Computersysteme besitzen die Fähigkeit, durch ein Computernetzwerk mit einem anderen Computersystem zu kommunizieren. Häufig kommuniziert ein Client-System (oder ein Client) mit einem Server-System (oder einem Server) durch das Einrichten einer sog. Verbindung zwischen dem Client und dem Server. Eine Verbindung ist ein Mechanismus, der die Übertragung von Daten zwischen zwei Endpunkten, einem Endpunkt bei dem Client und einen bei dem Server, ermöglicht. "The Design and Implementation of the 4.3BSD UNIX Operating System" von Leffler (1989) liefert detaillierte Erklärungen darüber, wie eine Verbindung zwischen einem Client und einem Server hergestellt und verwendet wird.
  • Sowohl der Client als auch der Server führen ein spezialisiertes Programm durch, um die Verbindung einzurichten und zu verwalten. Diese spezialisierten Programme erfordern typischerweise die Verwendung mehrerer komplexer Routinen. Beispielsweise verwenden UNIX-Programmierer Routinen, wie z.B. socket(), connect() und select(), um den Client vorzubereiten, die Verbindung zu initiieren und den Status der Verbindung zu überwachen. Ein Nachteil besteht darin, daß der Programmierer dadurch belastet ist, daß er mehr als eine Routine verwenden muß, um die Verbindungsvorrichtung einzurichten und zu verwalten, wenn er ein Programm für den Client schreibt.
  • Trotzdem ist eine Verbindung eine nützliche Vorrichtung für eine Kommunikation zwischen einem Client und einem Server. Wenn beispielsweise eine elektronische Nachricht von einem Client zu einem Server gesendet wird, richtet (1) der Client eine Verbindung zu dem Server ein, teilt (2) dem Server mit, einen Brief durch die Verbindung zu erwarten, sendet (3) den Brief durch die Verbindung zu dem Server, und empfängt (4) eine Rückbestätigung von dem Server, daß der Brief durch die Verbindung empfangen wurde.
  • UNIX verwendet eine Routine, die rcmd() genannt wird, die das Problem des Durchführens eines Fernbefehls durch die Verwendung einer Verbindung löst. Ein Programmierer verwendet die Routine rcmd() in dem Aufrufprogramm, um einen Befehl aus der Ferne auf einem Server durchzuführen. Die Routine rcmd() sendet den Fernbefehl durch die Verbindung zu dem Server. Danach wartet (oder blockiert) die Routine rcmd(), bis die Routine rcmd() eine Antwort von dem Server erfaßt. Die Routine rcmd() handhabt automatisch die Verbindungseinrichtung, so daß der Programmierer nicht damit belastet ist, Routinen, beispielsweise socket(), bind() und connect() direkt verwenden zu müssen. Nachdem die Routine rcmd() die Verbindung eingerichtet hat, kann es notwendig sein, daß das Aufrufprogramm select() aufrufen muß, um die Konversation zu verwalten, d.h., um die Daten, die von dem Server empfangen werden, zu verwalten.
  • Der Server verwendet einen Dämon inedt (inetd daemon), um auf die Routine rcmd() des Clients zu antworten. Ein Dämon ist ein Prozeß, der einen System-bezogenen Dienst liefert, wobei der System-bezogene Dienst in diesem Fall die Antwort des Servers auf die Routine rcmd() ist, was zur Folge hat, daß der Server eine Anzeige zu dem Client zurücksendet, daß der Befehl ausgeführt wurde. Speziell startet der Dämon inetd einen Dämon remshd, welcher gemäß einem eingerichteten Protokoll (welches hierin der Einfachheit halber das remsh- Protokoll genannt wird) den Fernbefehl von dem Client empfängt, den Fernbefehl ausführt und ein Null-Byte zu dem Client zurückgibt.
  • Jedoch weist die Routine rcmd() mehrere Nachteile auf. Erstens muß das Aufrufprogramm, sobald das Aufrufprogramm die Routine rcmd() aufruft, warten, bis die Routine rcmd() die gesamte Fernbefehl-Aufrufoperation abgeschlossen hat. D.h., daß die Routine rcmd() als ein atomischer (d.h. nichtteilbarer) Schritt des (1) Einrichtens einer Verbindung mit dem Server, (2) Sendens des Fernbefehls zu dem Server, (3) Blockierens (d.h. Wartens), um zu ermöglichen, daß der Server antwortet, und (4) Empfangens eines Null-Bytes von dem Server wirksam ist. Die Atomarität der Routine rcmd() kann eine Unannehmlichkeit für das Aufrufprogramm darstellen. Insbesondere ist die Ansprechzeit des Aufrufprogramms dadurch erhöht, daß es warten muß, bis die Routine rcmd() abgeschlossen ist.
  • Zweitens führt die Routine rcmd() "Wiederholungs"-Operationen durch, bis die Routine rcmd() das Null-Byte empfängt, oder bis eine feste Anzahl von Wiederholungen durchgeführt ist (d.h. eine Zeitablaufbedingung auftritt). Insbesondere wenn der Server nicht verfügbar ist, wird die Routine rcmd() trotzdem insgesamt fünfmal versuchen, (1) eine Verbindung einzurichten, (2) den Fernbefehl zu senden, und (3) zu warten, um eine Antwort zu empfangen, bevor eine Fehleranzeige geliefert wird. Dieser Betrieb blockiert das Aufrufprogramm für etwa 30 Sekunden. Folglich macht die Verwendung der Routine rcmd() das Verhalten des Aufrufprogramms sehr empfindlich gegenüber Verbindungsproblemen.
  • Drittens erzeugt die Routine rcmd() jedesmal eine neue Verbindung, wenn sie aufgerufen wird. Folglich werden jedesmal, wenn das Aufrufprogramm die Routine rcmd() aufruft, um einen Fernbefehl auf einem speziellen Client auszuführen, Betriebsmittel sowohl durch den Client als auch durch den Server verbraucht, um eine neue Verbindung zu erzeugen und bei zubehalten.
  • Außerdem unterstützt die Routine rcmd() keine Parallelisierung der Kommunikation, d.h., daß ein Programmierer die Routine rcmd() nicht verwenden kann, um Verbindungen zu mehr als einem Server einzurichten und den Fernbefehl gleichzeitig zu jedem Server zu senden. Wenn der Programmierer wünscht, einen Fernbefehl auf mehr als einem Server auszuführen, muß der Programmierer folglich die Routine rcmd() wieder und wieder für jeden Server seriell aufrufen oder zu einem neuen Prozeß verzweigen, um mit jedem Server zu kommunizieren, was Betriebsmittel-aufwendig ist. Es sollte offensichtlich sein, daß mehrere Zeitabläufe von 30 Sekunden, die beispielsweise durch Netzwerkprobleme bewirkt werden, die Probleme eines schlecht arbeitenden Aufrufprogramms verschlimmern können.
  • Wenn der Programmierer wünscht, Verbindungen mit mehreren Servern gleichzeitig unter Verwendung der Verbindungsroutinen, beispielsweise connect() und select(), direkt einzurichten und zu verwalten, sind dem Programmierer andererseits dadurch Unannehmlichkeiten bereitet, daß er zusätzliche Zeit und Bemühungen in das Entwickeln eines Codes investieren muß, der die Einrichtung und die Verwaltung einer Verbindung zwischen dem Client und jedem Server koordiniert und unterscheidet.
  • Folglich existiert ein Bedarf nach einem Werkzeug, das es einem Programmierer ermöglicht, bequem und wirksam Verbindungen zwischen einem Client und mehr als einem Server parallel einzurichten und zu verwalten. Außerdem existiert ein Bedarf nach einer Vorrichtung, die es einem Client ermöglicht, Fernbefehle auf einem Server auszuführen, welche die Nachteile der Routine rcmd(), die oben dargelegt wurde, überwindet.
  • Die EP 0467546 A2 betrifft ein verteiltes Datenverarbeitungssystem, bei dem eine Mehrzahl von Datenverarbeitungsknoten mittels eines Netzwerks verbunden sind. Bei den Knoten handelt es sich z. B. um Personalcomputer, Workstations oder Großrechner und das Netzwerk kann beispielsweise ein lokales Netzwerk sein. Jeder Knoten enthält eine Anzahl von Anwendungsprogrammen, sogenannte Agenten, bei denen ein Problem existiert, wenn ein Knoten fehlerhaft funktioniert. In diesem Fall sind alle Server-Agenten an diesem Knoten für das Gesamtsystem nicht mehr verfügbar und das Gesamtsystem kann daher nicht mehr betrieben werden. Diese Problematik wird dadurch gelöst, dass zumindest einige der Server-Agenten vervielfacht werden, um so eine Mehrzahl von Kopien des selben Dienstes zu schaffen.
  • Die WO 95/00905 A1 betrifft einen Programm-zu-Programm-Kommunikationsserver, der dazu dient, eine Schnittstelle zwischen Programmen in einer ersten Computerumgebung mit Programmen in einer zweiten Computerumgebung zu schaffen. Ein Server ist vorgesehen, welcher einen Datenaustausch zwischen den Programmen, die auf unterschiedlichen Client-Computern laufen, mit Programmen, die in einer anderen Computerumgebung ablaufen, ermöglicht. Dieser Server schafft eine Serverbeziehung mit einer Vielzahl von Client-Computern und bildet einen einzelnen Steuerungspunkt für die Kommunikation mit einem oder mehreren Computern in einer anderen Umgebung. Durch den Server werden mehrere Serverprozesse erzeugt, die durch die Programme in einer ersten Computerumgebung verwendet werden, um mit Programmen in einer zweiten Computerumgebung zu kommunizieren.
  • Die US-A-5,355,453 betrifft eine Architektur für einen parallelen Eingabe/Ausgabe-Netzwerkdateiserver. Diese Serverarchitektur umfasst eine Mehrzahl von Netzwerksteuerungen, von Datensteuerungen und von Speicherprozessoren, die alle über einen Meldungsbus verbunden sind und parallel zu dem Hauptrechner laufen. Die Steuerungen sind wirksam, um nur diejenigen Datenpakete, welche nicht durch die Netzwerksteuerungen verarbeitet werden können, an den Hauptrechner zur Verarbeitung weiterzuleiten.
  • Die US-A-4,982,187 betrifft eine Architektur für ein Umschalt-Teilsystem, das eine Verbindung einer Mehrzahl von Anforderungen pro Verbindungseinrichtung ermöglicht. Das Schalt-Teilsystem arbeitet als ein Kreuzschienenschalter unter der Steuerung einer Steuerungseinrichtung, um ausgewählte Eingangsverbindungen mit ausgewählten Ausgangsverbindungen zu verbinden. Eine Datenstruktur ist vorgesehen, zusammen mit drei Schaltservern, einem Anfrageserver und einem Verbindungsserver sowie einem Bestätigungsserver. Ein Schnittstellenprotokoll kann für verschiedene Anwendungen angepasst sein und ermöglicht es Anfragen entweder in einer Warteschlange zwischenzuspeichern bis eine angeforderte Verbindung verfügbar ist oder den Anfragenden sofort zu informieren, dass eine angeforderte Verbindung nicht möglich ist.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zu schaffen, um wirksam eine Verbindung zwischen einem Client-Computersystem und einer Mehrzahl von Server-Computersystemen parallel einzurichten und zu verwalten.
  • Diese Aufgabe wird durch ein Verfahren gemäß Patentanspruch 1 und durch eine Vorrichtung gemäß Patentanspruch 13 gelöst.
  • Ein erster Aspekt der Erfindung richtet sich auf ein Verfahren zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und jedem einer Mehrzahl von Server-Computersystemen. Das Verfahren weist folgende Schritte auf: (a) Bereitstellen einer Mehrzahl von Serversystem-Datenstrukturen, wobei jede der Mehrzahl von Serversystem-Datenstrukturen einem der Mehrzahl von Server-Computersystemen zugeordnet ist und einen Statusanzeiger aufweist, der einen Wert speichert, welcher einen Verbindungszustand anzeigt, der zwischen dem Client-Computersystem und dem zugeordneten der Mehrzahl von Server-Computersystemen existiert; (b) Versuchen, für jede der Mehrzahl von Serversystem-Datenstrukturen, die einen Statusanzeiger aufweisen, der einen Wert speichert, der keine Verbindung anzeigt, eine Verbindung zwischen dem Client-Computersystem und dem zugeordneten der Mehrzahl von Server-Computersystemen einzurichten; und (c) Versuchen, für jede der Mehrzahl von Serversystem-Datenstrukturen, den Verbindungszustand zwischen dem Client-Computersystem und dem zugeordneten der Mehrzahl von Server-Computersystemen weiterzustellen, und Aktualisieren des Statusanzeigers, wenn der Verbindungszustand zwischen dem Client-Computersystem und dem zugeordneten der Mehrzahl von Server-Computersystemen weitergestellt ist.
  • Ein weiterer Aspekt der Erfindung richtet sich auf ein Verfahren zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und einem Server-Computersystem. Das Verfahren weist folgende Schritte auf: (a) Bereitstellen einer Serversystem-Datenstruktur, die einen Statusanzeiger aufweist, welcher einen wert speichert, der einen Verbindungszustand anzeigt, der zwischen dem Client-Com putersystem und dem Server-Computersystem existiert; (b) Versuchen, eine Verbindung zwischen dem Client-Computersystem und dem Server-Computersystem einzurichten, wenn der Statusanzeiger einen Wert speichert, der keine Verbindung anzeigt; und (c) Versuchen, den Verbindungszustand zwischen dem Client-Computersystem und dem Server-Computersystem weiterzustellen, und Aktualisieren des Statusanzeigers, wenn der Verbindungszustand zwischen dem Client-Computersystem und dem Server-Computersystem weitergestellt ist.
  • Ein weiterer Aspekt der Erfindung richtet sich auf eine Vorrichtung zum Einrichten und Verwalten einer Verbindung mit jedem einer Mehrzahl von Server-Computersystemen in einem Computernetzwerk. Die Vorrichtung weist einen elektronischen Digitalcomputer mit einem Prozessor, einem Speicher und einer Netzwerkschnittstelle auf. Der Computer wirkt als ein Client-Computersystem. Der Computer weist eine Einrichtung auf, um eine Mehrzahl von Serversystem-Datenstrukturen zu liefern, wobei jede der Mehrzahl von Serversystem-Datenstrukturen einem einer Mehrzahl von Server-Computersystemen zugeordnet ist und einen Statusanzeiger aufweist, der einen Wert speichert, welcher einen Verbindungszustand zwischen dem Client-Computersystem und dem zugeordneten der Mehrzahl von Server-Computersystemen anzeigt. Das Client-Computersystem weist ferner eine Einrichtung auf, um für jede der Mehrzahl von Serversystem-Datenstrukturen, die einen Statusanzeiger aufweist, der einen Wert speichert, welcher keine Verbindung anzeigt, zu versuchen, eine Verbindung zwischen dem Client-Computersystem und dem zugeordneten der Mehrzahl von Server-Computersystemen einzurichten. Das Client-Computersystem weist zusätzlich eine Einrichtung auf, um für jede der Mehrzahl von Serversystem-Datenstrukturen zu versuchen, den Verbindungszustand zwischen dem Client-Computersystem und dem zugeordneten der Mehrzahl von Server-Computersystemen weiterzustellen, und um den Statusanzeiger zu aktualisieren, wenn der Verbindungszustand zwischen dem Client-Computersystem und dem zugeordneten der Mehrzahl von Server-Computersystemen weitergestellt ist.
  • Ein weiterer Aspekt der Erfindung ist auf eine Vorrichtung zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und einem Server-Computersystem in einem Computernetzwerk gerichtet. Die Vorrichtung weist einen elektronischen Digitalcomputer mit einem Prozessor, einem Speicher und einer Netzwerkschnittstelle auf. Der Computer ist als ein Client-Computersystem wirksam. Das Client-Computersystem weist eine Einrichtung auf, um eine Serversystem-Datenstruktur mit einem Statusanzeiger, der einen Wert speichert, der einen Verbindungszustand zwischen dem Client-Computersystem und dem Server-Computersystem anzeigt, zu liefern. Das Client-Computersystem weist ferner eine Einrichtung auf, um zu versuchen, eine Verbindung zwischen dem Client-Computersystem und dem Server-Computersystem einzurichten, wenn der Statusanzeiger einen Wert speichert, der keine Verbindung anzeigt. Das Client-Computersystem weist außerdem eine Einrichtung auf, um zu versuchen, den Verbindungszustand zwischen dem Client-Computersystem und dem Server-Computersystem weiterzustellen, und um den Statusanzeiger zu aktualisieren, wenn der Verbindungszustand zwischen dem Client-Computersystem und dem Server-Computersystem weitergestellt ist.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm eines Computersystems, das für die Implementierung der Erfindung geeignet ist;
  • 2 ein Blockdiagramm eines Computernetzwerks, das für die Implementierung der Erfindung geeignet ist;
  • 3 ein Diagramm einer Server-Datenstruktur gemäß einem Ausführungsbeispiel der Erfindung;
  • 4 ein Array von Server-Datenstrukturen gemäß einem Ausführungsbeispiel der Erfindung;
  • 5 ein Flußdiagramm einer Routine prcmd() gemäß einem Ausführungsbeispiel der Erfindung;
  • 6 ein Flußdiagramm des Schritts "Schließe bzw. Beende eine Verbindung" von 5 gemäß einem Ausführungsbeispiel der Erfindung;
  • 7 ein Flußdiagramm des Schritts "Versuche, eine Verbindung einzurichten" von 5 gemäß einem Ausführungsbeispiel der Erfindung;
  • 8 ein Flußdiagramm des Schritts "Bereite Client für Verbindung vor" von Schritt 7 gemäß einem Ausführungsbeispiel der Erfindung;
  • 9 ein Flußdiagramm des Schritts "Bilde server_identifier (Server_Identifizierer) auf binäre Form ab" von 8 gemäß einem Ausführungsbeispiel der Erfindung;
  • 10 ein Flußdiagramm des Schritts "Bereite Endpunkt vor" von 8 gemäß einem Ausführungsbeispiel der Erfindung;
  • 11 ein Flußdiagramm des Schritts "Versuche, einen Verbindungszustand weiterzustellen" von 5 gemäß einem Ausführungsbeispiel der Erfindung;
  • 12 ein Flußdiagramm des Schritts "Aktualisiere eine Auswahlliste" von 11 gemäß einem ersten Ausführungsbeispiel der Erfindung;
  • 13 ein Flußdiagramm des Schritts "Aktualisiere eine Auswahlliste" von 11 gemäß einem zweiten Ausführungsbeispiel der Erfindung;
  • 14 eine Schalterimplementierung des Schritts "Erhalte Auswahlergebnis" von 11 gemäß dem ersten Ausführungsbeispiel der Erfindung;
  • 15 eine Schalteranweisungs-Implementierung des Schritts "Erhalte Auswahlergebnis" von 11 gemäß dem zweiten Ausführungsbeispiel der Erfindung;
  • 16 ein Flußdiagramm der connect1_routine() (Verbinde1_Routine) von 14 gemäß dem ersten Ausführungsbeispiel der Erfindung;
  • 17 ein Flußdiagramm der connect1_routine() von 15 gemäß dem zweiten Ausführungsbeispiel der Erfindung;
  • 18 ein Flußdiagramm der connect2_routine() von 16 gemäß dem zweiten Ausführungsbeispiel der Erfindung;
  • 19 ein Flußdiagramm der connect3_routine() von 15 gemäß dem zweiten Ausführungsbeispiel der Erfindung;
  • 20 ein Flußdiagramm der read_wait_routine() (Lesen_Warten_Routine()) von entweder 14 gemäß dem ersten Ausführungsbeispiel der Erfindung oder 15 gemäß dem zweiten Ausführungsbeispiel der Erfindung; und
  • 21 ein Flußdiagramm der read_ready_routine() (Lesen_Bereit_Routine()) von entweder 14 gemäß dem ersten Ausführungsbeispiel der Erfindung oder 15 gemäß dem zweiten Ausführungsbeispiel der Erfindung.
  • Die vorliegende Erfindung wird durch die folgende detaillierte Beschreibung, die in Verbindung mit den beiliegenden Zeichnungen, in denen gleiche Bezugszeichen gleiche Strukturen anzeigen, gelesen werden sollte, besser verständlich. Alle Schriften, die hierin genannt sind, sind hiermit ausdrücklich durch Bezugnahme aufgenommen.
  • Die Erfindung verwendet einen Computer 1, wie er beispielsweise in 1 gezeigt ist. Der Computer 1 kann die Form eines Personalcomputers, eines Lap-Top-Computers, eines Rechner-gestützten Notizbuchs (notebook), einer Workstation, eines Mainframe-Computers, eines Supercomputers, eines Mehrprozessor-Computers oder eines verteilten Computernetzwerks aufweisen, die alle bestimmungsgemäß innerhalb des Bereichs der Erfindung liegen. Der Computer 1 ist sowohl für ein Client-System (oder einen Client) als auch ein Server-System (oder einen Server) repräsentativ.
  • Der Computer 1 weist einen gewöhnlichen Systembus 2 auf, der einen Prozessor 3 mit einem Speicher 4 verbindet, eine Eingabevorrichtung 5, eine Ausgabevorrichtung 6 und eine Netzwerkschnittstelle 7. Der Speicher 4 weist sowohl einen primären Speicher, der eine schnelle Zugriffszeit liefert und typischerweise in der Form eines Halbleiterspeichers vorliegt, als auch einen sekundären Speicher auf, der eine langsamere Zugriffszeit liefert und typischerweise in der Form einer magnetischen Platte oder eines Bands vorliegt, welches Daten behält, wenn die Leistung zu dem Computer 1 abgeschaltet ist. Die Eingabevorrichtung 5 ist vorzugsweise eine Tastatur, kann jedoch auch die Form einer Maus, eines Scanners, eines Mikrophons, einer Antenne oder einer beliebigen Kombination derselben aufweisen. Die Ausgabevorrichtung 6 ist vorzugsweise eine Videoanzeige, kann jedoch auch die Form eines Druckers, eines Lautsprechers, einer Antenne oder irgendeiner Kombination derselben annehmen. Ein exemplarischer Computer für die Erfindung ist der HP9000 Model 710 mit einer Anzeige A1097C, der von Hewlett-Packard verkauft wird. Obwohl andere Konfigurationen von Computer-Komponenten betrachtungsgemäß und bestimmungsgemäß innerhalb des Bereichs der Erfindung liegen, werden weitere Einzelhei ten der Erfindung zur Vereinfachung der Erklärung bezüglich des Computers 1, der in 1 gezeigt ist, erläutert.
  • Der Computer 1 weist ein Betriebssystem 10 auf, das die Zuordnung von Computer-Betriebsmitteln, einschließlich der Computer-Zeit, des Speicherraums und des Zugriffs auf ein Computernetzwerk, verwaltet. Außerdem weist die Erfindung eine prcmd()-Einrichtung 11 auf (die hierin nachfolgend als die Routine prcmd() bezeichnet wird). Bei einem ersten Ausführungsbeispiel richtet die Routine prcmd() 11 eine Verbindung mit einem kundenspezifischen Dämon (daemon) auf jedem Server ein und leitet Konversationen zwischen dem Client und jedem Dämon. Bei einem zweiten Ausführungsbeispiel enthält die Routine prcmd() 11 ferner das Protokoll remsh und führt einen Fernbefehl auf jedem Server durch, mit dem ein Client eine Konversation führt, die durch die Routine prcmd() 11 geleitet wird. Vorzugsweise ist die Routine prcmd() 11 eine Bibliotheksroutine. Jedoch kann die Routine prcmd() 11 auch die Form eines interaktiven Benutzerbefehls oder eines Systemaufrufs annehmen, die beide bestimmungsgemäß innerhalb des Bereichs der Erfindung zu liegen. Sowohl das Betriebssystem 10 als auch die Routine prcmd() 11 sind in dem Speicher 4 gespeichert.
  • Die Routine prcmd() 11 ermöglicht es, daß ein vernetztes Anwendungsprogramm 12 (d.h. ein Aufrufprogramm) effizient eine Verbindung zu einer großen Anzahl von Fernsystemen (d.h. Servern) parallel herstellt. Dies erlaubt es, daß das Aufrufprogramm 12 eine relativ beliebige Konversation mit jedem der Fernsysteme führt. Bei dem zweiten Ausführungsbeispiel implementiert die Routine prcmd() 11 die Client-Seite des Standardprotokolls remsh, was ermöglicht, daß die Routine prcmd() 11 mit den Dämonen inetd und remsh in Wechselwirkung tritt, die auf den Fernservern laufen. Die Verwendung der Dämonen inetd und remsh auf den Fernservern mildert die Notwendigkeit für den Benutzer, einen Dämon zum Ansprechen auf die Routine prcmd() 11 auf der Server-Seite zu schreiben. Trotzdem kann der Benutzer wahlweise einen kun denspezifischen Server-Seiten-Dämon schreiben, um spezifische Operationen zu handhaben.
  • 2 zeigt ein Blockdiagramm einer geeigneten Umgebung 20 für die Erfindung. Die Umgebung 20 ist ein Computernetzwerk, das einen Netzwerkbus 21 aufweist, der den Client 22 mit einem oder mehreren Servern 23 verbindet. Der Netzwerkbus 21 kann eine beliebige einer Vielzahl von Topologien und ein beliebiges einer Anzahl von Kommunikationsmedien, beispielsweise Ethernet, verdrillte Leitungen oder HF-Leitungen, aufweisen. Der Computer 1 ist eine geeignete Vorrichtung für den Client 22. Die Routine prcmd() 11 und das Aufrufprogramm 12 sind in dem Client 22 befindlich dargestellt. Außerdem ist der Computer 1 eine geeignete Vorrichtung für jeden des einen oder der mehreren Server 23. Jeder des einen oder der mehreren Server 23 muß einen Server-Dämon 24 aufweisen, der auf Anforderungen von der Routine prcmd() 11 anspricht, die durch den Netzwerkbus 21 von dem Client 22 empfangen werden.
  • 3 zeigt eine Server-Struktur 30, die von der Routine prcmd() 11 verwendet wird. Die Server-Struktur 30 ist eine Datenstruktur, die in dem Speicher 4 gespeichert ist. Das Aufrufprogramm muß sicherstellen, daß für jeden Server, mit dem eine Verbindung hergestellt werden soll, eine Server-Struktur 30 existiert, bevor die Routine prcmd() 11 aufgerufen wird. Eine Möglichkeit, um die Existenz einer Server-Struktur 30 für jeden Server, mit dem eine Verbindung hergestellt werden soll, sicherzustellen, für das Aufrufprogramm besteht darin, jede Server-Struktur 30 zu erzeugen und zu initialisieren, um ein Array von Strukturen 40 zu bilden, wie in 4 gezeigt ist. Nach dem Erzeugen des Arrays von Strukturen 40, bei dem jedes Element des Arrays einem der Server 23 zugeordnet ist, muß das Aufrufprogramm 12 verschiedene Felder jeder Server-Struktur 30 initialisieren. Speziell ist der server_identifier 31 ein Zeiger, der entweder auf den Serversystem-Knotennamen oder die Server-Internet-Adresse von einem der Server 23 zeigt. Die Statusvariable 32 muß auf den "NO_CONNECTION"-Zustand ("KEINE_VERBINDUNG"-Zustand) initialisiert werden, um anzuzeigen, daß gegenwärtig keine Verbindung zwischen dem Client 22 und dem Server 23 existiert. Außerdem zeigt bei dem ersten Ausführungsbeispiel der port_or_command-Zeiger 34 (Tor_oder_Befehl-Zeiger) auf eine Tornummer, durch die eine Verbindung zu dem Server 23 hergestellt wird. Bei dem zweiten Ausführungsbeispiel zeigt der port_or_command-Zeiger 34 auf einen Fernbefehl, der zu dem Server 23 gesendet werden soll. Ein Takt timeout_clock 33 (Zeitablauf_Takt) und ein Dateizeiger fp1 35 werden durch die Routine prcmd() 11 initialisiert. Optional kann die Server-Struktur 30 ferner einen zweiten Dateizeiger fp2 36 und eine close_flag 37 (Schließen_Flag bzw. Beende_Flag) aufweisen, die später erläutert werden.
  • Der Betrieb der Routine prcmd() 11 ist in 5 dargestellt und wird nun beschrieben. Das Aufrufprogramm initialisiert das Array von Strukturen 40. Danach ruft das Aufrufprogramm die Routine prcmd() 11 wiederholt auf, um Verbindungszustände weiterzustellen, die zwischen dem Client 22 und jedem von einem oder mehreren Servern 23 existieren, bis alle Verbindungen entweder scheitern oder geschlossen sind. Wenn das Aufrufprogramm 12 die Routine prcmd() 11 aufruft (1) empfängt die Routine prcmd() 11 das Array von Strukturen 40 von dem Aufrufprogramm (Schritt 50), (2) versucht, eine Verbindung für jeden Server einzurichten, der einen Status, der gleich dem "NO_CONNECTION"-Zustand ist, aufweist (Schritt 52), und (3) versucht, einen Verbindungszustand für jede Server-Struktur weiterzustellen (Schritt 53). Die Verbindungszustände unterscheiden sich für die unterschiedlichen Ausführungsbeispiele und werden nachfolgend aufgezählt. Es sei bemerkt, daß der Verbindungszustand für jeden Server mit einer unabhängigen Rate weitergestellt werden kann.
  • Der Schritt 50 bezieht sich auf das Aufrufprogramm 12, das einen Zeiger als einen Parameter für die Routine prcmd() 11 zu dem Array von Strukturen 40 leitet. Die Routine prcmd() 11 verwendet den Zeiger zu dem Array von Strukturen als ei nen Referenzpunkt, der den Beginn des Arrays von Strukturen 40 anzeigt. Die Routine prcmd() 11 kann auf jede Server-Struktur 30 des Arrays von Strukturen 40 zugreifen, indem sie auf einen Ort in dem Speicher zugreift, der gleich dem Zeiger auf das Array von Strukturen plus N mal der Größe einer Server-Struktur ist, wobei N gleich einer ganzen Zahl größer oder gleich Null (d.h. N = 0,1,2,....) ist. Der Schritt 52 schließt das Versuchen der Routine prcmd() 11 ein, eine Verbindung für jeden des einen oder der mehreren Server 23 einzurichten, der eine zugeordnete Server-Struktur 30 aufweist, deren Statusvariable gleich dem "NO_CONNECTION"-Zustand ist. Der Schritt 53 schließt das Versuchen der Routine prcmd() 11 ein, den Verbindungszustand zwischen dem Client 22 und jedem des einen oder der mehreren Server 23 weiterzustellen, d.h. jeder Server-Struktur 30 des Arrays von Strukturen 40. Folglich versucht die Routine prcmd() 11 jedesmal, wenn sie aufgerufen wird, eine Verbindung mit jedem Server einzurichten, bevor sie versucht, jeden der Verbindungszustände zwischen dem Client 22 und dem einen oder den mehreren Servern 23 weiterzustellen. Daher handhabt die Routine prcmd() 11 die Einrichtung und die Wartung der Verbindungen parallel.
  • Der Betrieb der Routine prcmd() 11, wie er oben beschrieben ist, überwindet die Nachteile der Routine rcmd(). Speziell muß das Aufrufprogramm 12 nicht auf die Fernbefehloperationen auf jedem Server warten, um abzuschließen. Vielmehr springt die Routine prcmd() 11 zurück, nachdem sie inkremental versucht hat, den Verbindungszustand zwischen dem Client 22 und jedem des einen oder der mehreren Server 23 weiterzustellen. Vorzugsweise verwendet die Routine prcmd() 11 nicht-blockierende Systemaufrufe, so daß die Betriebszeit jedes Aufrufs der Routine prcmd() 11 minimiert ist. Zweitens ist das Verhalten des Aufrufprogramms 12 nicht länger extrem empfindlich gegenüber Verbindungsproblemen, da die Routine prcmd() 11 das Aufrufprogramm beim Durchführen einer Wiederholungsoperation nicht blockiert. Drittens kann ein Benutzer ein kundenspezifisches Server-Seiten-Programm für jeden des einen oder der mehreren Server 23 schreiben, um in Wechselwirkung mit der Routine prcmd() 11 zu treten, derart, daß Verbindungen zwischen dem Client und jedem des einen oder der mehreren Server 23 beibehalten oder wiederverwendet werden. Dies ermöglicht es, daß das Aufrufprogramm 12 weniger Verbindungsbetriebsmittel auf dem Client 22 verbraucht, da nicht jedesmal, wenn der Client eine Konversation mit dem Server führt, eine neue Verbindung erzeugt werden muß.
  • Optional ermöglicht die Routine prcmd() 11, daß das Aufrufprogramm 12 der Routine prcmd() 11 befiehlt, beliebige vorher existierende Verbindungen zwischen dem Client 22 und jedem des einen oder der mehreren Server 23 zu schließen bzw. zu beenden. Diese Option macht es erforderlich, daß jede Server-Struktur 30 eine close_flag-Variable aufweist. Jede der close_flag-Variablen 37 des Arrays von Strukturen 40 muß auf den "DO_NOT_CLOSE"-Zustand ("SCHLIEßE_NICHT"-Zustand) initialisiert werden. Wenn das Aufrufprogramm 12 wünscht, eine Verbindung zwischen dem Client 22 und einem Server zu schließen, muß das Aufrufprogramm close_flag 37 der Server-Struktur 30, die dem Server zugeordnet ist, auf den "CLOSE"-Zustand ("SCHLIEßE"-Zustand) setzen. Der Schritt 51, der in 5 gezeigt ist, schließt eine Verbindung zwischen dem Client 22 und jedem des einen oder der mehreren Server 23, deren close_flag den "CLOSE"-Zustand aufweist.
  • 6 zeigt den Schritt 51 (5) detaillierter. Der Schritt 60 schließt das Springen der Routine prcmd() 11 zu dem Beginn des Arrays von Strukturen 40 ein. Der Schritt 61 bestimmt, ob die Routine prcmd() 11 am Ende des Arrays von Strukturen 40 ist. Wenn die Routine prcmd() 11 nicht am Ende des Arrays von Strukturen 40 ist, springt die Routine vom Schritt 61 zu einem Schritt 62, in dem auf eine Server-Struktur 30 aus dem Array von Strukturen 40 zugegriffen wird. In einem Schritt 63 wird bestimmt, ob close_flag 37 der Server-Struktur 30 den"CLOSE"-Zustand aufweist. Wenn close_flag 37 den "CLOSE"-Zustand aufweist, springt die Routine vom Schritt 63 zu einem Schritt 64, der die Verbindung zu dem Server, der durch den server_identifier-Zeiger 31 der Server-Struktur identifiziert ist, schließt. In einem Schritt 65 wird die Statusvariable 32 der Server-Struktur 30 auf den "DONE"-Zustand ("ERLEDIGT"-Zustand) gesetzt. In einem Schritt 66 wird die Routine prcmd() 11 auf die nächste Server-Struktur 30 des Arrays von Server-Strukturen 40 gerichtet. Wenn close_flag 37 nicht den "CLOSE"-Zustand aufweist, d.h., wenn close_flag 37 den "DO_NOT_CLOSE"-Zustand aufweist, überspringt die Routine prcmd() 11 die Schritte 64 und 65 und springt direkt zu dem Schritt 66. Wenn im Schritt 61 bestimmt wird, daß die Routine prcmd() 11 am Ende des Arrays von Strukturen (Schritt 61) ist, wird vom Schritt 51 zurückgesprungen, wobei die Routine prcmd() 11 zu dem Schritt 52 springt, wie in 5 gezeigt ist.
  • Für den Schritt 51 ist ein beliebiger Schleifenbefehl geeignet. Beispielsweise kann in C die Schleife unter Verwendung einer for-Schleife einer while-Schleife oder einer dowhile-Schleife implementiert sein.
  • 7 liefert ein Flußdiagramm des Schritts 52 (5), welcher nun detaillierter erläutert wird. Ein Schritt 70 richtet die Routine prcmd() 11 auf den Beginn des Arrays von Strukturen 40. In einem Schritt 71 wird bestimmt, ob die Routine prcmd() 11 am Ende des Arrays von Strukturen 40 ist. Wenn die Routine prcmd() 11 nicht am Ende des Arrays von Strukturen 40 ist, springt die Routine vom Schritt 71 zu einem Schritt 72, in dem auf eine Server-Struktur 30 aus dem Array von Strukturen 40 zugegriffen wird. In einem Schritt 73 wird bestimmt, ob die Server-Struktur 30, auf die zugegriffen wurde, eine Statusvariable 32 aufweist, die gleich dem "NO_CONNECTION"-Zustand, ist. Wenn die Statusvariable 32 nicht gleich dem "NO_CONNECTION"-Zustand ist, springt die Routine vom Schritt 73 zu einem Schritt 79. Wenn die Statusvariable 32 gleich "NO_CONNECTION" ist, springt die Routine vom Schritt 73 zu einem Schritt 74. Im Schritt 74 wird bestimmt, ob der Client 22 ausreichend Betriebsmittel aufweist, um eine weitere Verbindung einzurichten. Beispiels weise kann dem Client 22 eine verfügbare, reservierte Tornummer fehlen (wie nachfolgend erläutert wird), wodurch verhindert wird, daß der Client 22 eine Verbindung mit dem Server, der durch server_identifier 31 der Server-Struktur 30, auf die zugegriffen wurde, identifiziert ist, einrichtet. Wenn der Client 22 ausreichend Betriebsmittel aufweist, springt die Routine vom Schritt 74 zu einem Schritt 75, welcher den Client 22 für die Verbindung vorbereitet. Ein Schritt 76 schließt den Versuch der Routine prcmd() 11 ein, eine Verbindung mit dem identifizierten Server herzustellen. Bei dem ersten Ausführungsbeispiel schließt dies das Herstellen einer Verbindung mit der Tornummer, die durch port_or_command 34 spezifiziert ist, ein. Bei dem zweiten Ausführungsbeispiel schließt dies das Herstellen einer Verbindung zu der Standardtornummer für den remsh-Dienst ein. In einem Schritt 77 wird die Statusvariable 32 auf den "CONNECTION_1"-Zustand ("VERBINDUNG_1"-Zustand) eingestellt. Im Schritt 78 wird ein timeout_clock 33 für den Server gestartet, der durch die Server-Struktur 30 identifiziert ist. Im Schritt 79 wird die Routine prcmd() 11 auf die nächste Server-Struktur 30 in dem Array von Strukturen 40 gerichtet. Wenn im Schritt 71 bestimmt wird, daß die Routine prcmd() 11 am Ende des Arrays von Strukturen 40 ist, wird im Schritt 71 ein Rücksprung zu dem Schritt 52 bewirkt, so daß die Routine prcmd() 11 zu dem Schritt 53 springen kann.
  • Der Schritt 76 (siehe 7) kann die Routine connect() verwenden, um die Verbindung zwischen dem Client 22 und dem Server zu initiieren. Obwohl im Schritt 76 ein blockierendes connect() (verbinde()) verwendet werden kann, ist ein nicht-blockierendes connect() bevorzugt, um das Verhalten der Routine prcmd() 11 zu verbessern.
  • 8 zeigt weitere Einzelheiten des Schritts 75 (7), welcher nun erläutert wird. Die Routine prcmd() richtet Verbindungen mit jedem des einen oder der mehreren Server 23 unter Verwendung einer binären Netzwerkadresse für jeden Server ein. In einem Schritt 80 wird bestimmt, ob der Ser ver-Identifizierer 31 der Server-Struktur 30 auf eine binäre Netzwerkadresse abgebildet wurde (d.h. umgewandelt wurde). Wenn der Server-Identifizierer 31 nicht abgebildet wurde, springt die Routine vom Schritt 80 zu einem Schritt 81. Andernfalls springt die Routine von dem Schritt 80 zu einem Schritt 82. Im Schritt 81 wird der Server-Identifizierer 31 in eine binäre Form abgebildet. Im Schritt 82 wird ein Client-Seiten-Endpunkt für ein Ende der Verbindung zwischen dem Client 22 und dem Server vorbereitet.
  • 9 zeigt weitere Einzelheiten des Schritts 81 (8), welcher nun erläutert wird. In einem Schritt 84 wird bestimmt, ob der Server-Identifizierer 31 der Server-Struktur 30 eine Adresse ist. Wenn der Server-Identifizierer 31 eine Adresse ist, springt die Routine vom Schritt 84 zu einem Schritt 86. Wenn server_identifier 31 keine Adresse ist, springt die Steuerung von dem Schritt 84 zu einem Schritt 85, in dem der Server-Identifizierer auf eine oder mehrere Adressen abgebildet wird, wobei jede Adresse den Server identifiziert. Im Schritt 86 werden die eine oder die mehreren Adressen zur Verwendung durch den Client 22 in eine binäre Form abgebildet, um eine Verbindung mit dem Server einzurichten.
  • 10 zeigt weitere Einzelheiten des Schritts 82 (8), der nun erläutert wird. In einem Schritt 87 wird ein Sockel (socket) erzeugt und ein Sockel-Deskriptor für die Verbindung zwischen dem Client 22 und dem Server gespeichert. In einem Schritt 88 wird der Sockel an eine reservierte Tornummer gebunden. Es sei in Erinnerung gerufen, daß im Schritt 74 bestimmt wurde, das Tornummern verfügbar sind. Vorzugsweise findet der Aufruf von Betriebsmitteln (Schritt 75) und die Überprüfung nach ausreichenden Betriebsmitteln (Schritt 74) gleichzeitig statt, um Wettlaufsituationen zu vermeiden. In einem Schritt 89 wird der gespeicherte Sockel-Deskriptor des Schritts 87 auf einen Strom-Zeiger (stream pointer) abgebildet, der in dem Dateizeiger fp1 35 der Server-Struktur 30 gespeichert ist. Das Aufrufprogramm 12 kann aus dem Datenstrom lesen (beispielsweise die Ergebnisse des Fernbefehls von dem Server), und Daten unter Verwendung des Dateizeigers fp1 35 zu dem Fernbefehl- oder Kunden-Dämon senden. Die Routine prcmd() 11 kann die Routinen socket(), bind() und fdopen() für die Schritte 87, 88 bzw. 89 verwenden, so daß das Aufrufprogramm 12 sich nicht mit diesen Aufgaben abgeben muß.
  • 11 liefert weitere Einzelheiten des Schritts 53 (5), der nun erläutert wird. In einem Schritt 90 wird die Routine prcmd() 11 auf den Beginn des Arrays von Strukturen 40 gerichtet. In einem Schritt 91 wird bestimmt, ob die Routine prcmd() 11 am Ende des Arrays von Strukturen 40 ist. Wenn dies nicht der Fall ist, springt die Routine vom Schritt 91 zu einem Schritt 92, in dem auf eine Server-Struktur 30 des Arrays von Strukturen 40 zugegriffen wird. Ein Schritt 93 schließt das Aktualisieren einer Auswahlliste 13 gemäß dem Status 32 der Server-Struktur 30 ein. In einem Schritt 107 wird zu der nächsten Server-Struktur 30 in dem Array von Strukturen 40 gesprungen. Wenn im Schritt 91 bestimmt wird, daß die Routine prcmd() 11 am Ende des Arrays von Strukturen 40 ist, springt die Routine vom Schritt 91 zu einem Schritt 108. Im Schritt 108 wird bestimmt, ob die Auswahlliste leer ist. Wenn dies der Fall ist, bewirkt der Schritt 108 einen Rücksprung vom Schritt 53. Andernfalls springt die Routine vom Schritt 108 zum Schritt 94. Im Schritt 94 werden Auswahlergebnisse zwischen dem Client 22 und jedem der Server 23 in der Auswahlliste 13 erhalten, d.h. die Routine prcmd() 11 überprüft den Status der Verbindung zwischen dem Client 22 und jedem des einen oder der mehreren Server 23 auf der Auswahlliste 13. In einem Schritt 95 wird die Routine prcmd() 11 auf den Beginn des Arrays von Strukturen 40 gerichtet. In einem Schritt 96 wird bestimmt, ob die Routine prcmd() 11 am Ende des Arrays von Strukturen 40 ist. Wenn dies nicht der Fall ist, springt die Routine vom Schritt 96 zu einem Schritt 97, der auf eine Server-Struktur 30 des Arrays von Strukturen 40 zugreift. Ein Schritt 98 umfaßt (1) das Analysieren des Auswahlergebnisses zwischen dem Client 22 und dem Server, der der Server-Struktur 30, auf die zugegriffen wurde, zugeordnet ist, wenn der Server-Identifizierer auf der Auswahlliste 13 ist, und (2) das Aktualisieren der Statusvariable 32 der Server-Struktur 30, auf die zugegriffen wurde, wenn das Auswahlergebnis anzeigt, daß der Verbindungszustand weitergestellt wurde. Im Schritt 99 wird zu der nächsten Server-Struktur 30 in dem Array von Strukturen 40 geschaltet. Wenn im Schritt 96 bestimmt wird, daß die Routine prcmd() 11 am Ende des Arrays von Strukturen 24 ist, folgt ein Rücksprung vom Schritt 53 und die Routine prcmd() 11 ist abgeschlossen.
  • Es sollte offensichtlich sein, daß in den Schritten 95 bis 99 jede Server-Struktur des Arrays von Strukturen 40 überquert wird, selbst wenn der Nettoeffekt darin besteht, nur auf die Server-Strukturen auf der Auswahlliste zuzugreifen. Alternativ kann die Auswahlliste überquert werden, so daß Server-Strukturen, die nicht auf der Auswahlliste sind, nicht berücksichtigt werden. Jedoch verwendet das bevorzugte Verfahren die Schritte 95 bis 99, wie sie gezeigt sind, da diese Schritte schnell und wirksam einen Zugriff auf die Statusvariable 32 der Server-Strukturen 30 für eine Aktualisierung liefern.
  • 12 zeigt ein erstes Ausführungsbeispiel des Schritts 93 (11). Bei dem ersten Ausführungsbeispiel kommuniziert die Routine prcmd() 11 mit einem kundenspezifischen Dämon, der auf dem einen oder den mehreren Servern 23 läuft. In einem Schritt 100 wird bestimmt, ob die Statusvariable 32 der Server-Struktur 30 entweder gleich dem "CONNECT_1"-Zustand, dem "READ_WAIT"-Zustand oder dem "READ_READY"-Zustand ist. Wenn dies der Fall ist, wird der Server Identifizierer 31 der Server-Struktur zu der Auswahlliste 13 hinzugefügt. Andernfalls erfolgt ein Rücksprung vom Schritt 93.
  • 13 zeigt ein bevorzugtes zweites Ausführungsbeispiel des Schritts 93 (11). Bei dem bevorzugten zweiten Ausführungsbeispiel kommuniziert die Routine prcmd() 11 mit dem einen oder den mehreren Servern 23 unter Verwendung des Protokolls remsh. In diesem Fall ist kein kundenspezifischer Dämon notwendig, und die Routine prcmd() 11 verwendet den Server-seitigen Dämon inetd und den Dämon remshd, die gegenwärtig mit dem UNIX-Betriebssystem geliefert werden. In einem Schritt 105 wird bestimmt, ob die Statusvariable 32 der Server-Struktur 30 entweder gleich dem "CONNECT_1"-Zustand, dem "CONNECT_2"-Zustand, dem "CONNECT_3"-Zustand, dem "READ_WAIT"-Zustand oder dem "READ_READY"-Zustand ist. Wenn dies der Fall ist, springt die Routine vom Schritt 105 zu einem Schritt 106, der das Hinzufügen des Server-Identifizierers 31 der Server-Struktur 30, auf die zugegriffen wurde, zu der Auswahlliste 13 einschließt. Andernfalls wird im Schritt 105 einfach ein Rücksprung vom Schritt 93 bewirkt.
  • Der Schritt 98 (11) wird nun detaillierter in Verbindung mit dem ersten Ausführungsbeispiel erläutert. Zuerst ruft der Schritt 98 eine Routine gemäß dem Wert der Statusvariable 32 der Server-Struktur 30, auf die zugegriffen wurde, auf. 14 zeigt einen Schaltbefehl, der in der Programmiersprache C geschrieben ist, der bestimmt, welche Routine aufgerufen werden soll. Wenn die Statusvariable 32 gleich dem "CONNECT_1"-Zustand ist, springt die Routine vom Schritt 98 zu der connect1_routine() 110. Wenn die Statusvariable 32 gleich dem "READ_WAIT"-Zustand ist, wird im Schritt 98 read_wait_routine() 114 aufgerufen. Wenn die Statusvariable 32 gleich dem "READ_READY"-Zustand ist, wird im Schritt 98 read_ready_routine() 115 aufgerufen.
  • Die Routine connect1_routine() 110 (14) ist in 16 dargestellt und wird nun detailliert erläutert. In einem Schritt 120 wird bestimmt, ob die Verbindung zwischen dem Client 22 und dem einen der Server 23 für ein Schreiben bereit ist. Wenn dies der Fall ist, springt die Routine vom Schritt 120 zu einem Schritt 124. Im Schritt 124 wird die Statusvariable 32 der Server-Struktur 30 gleich dem "READ_WAIT"-Zustand eingestellt. In einem Schritt 125 wird timeout_clock 33 der Server-Struktur 30 rückgesetzt. Wenn im Schritt 20 bestimmt wird, daß die Verbindung zwischen dem Client und dem Server nicht bereit für ein Schreiben ist, springt die Routine vom Schritt 120 zu einem Schritt 126, der bestimmt, ob eine Zeitablaufbedingung aufgetreten ist, indem auf timeout_clock 33 zugegriffen wird. Wenn keine Zeitablaufbedingung aufgetreten ist, wird im Schritt 126 ein Rücksprung vom Schritt 110 bewirkt. Andernfalls wird in einem Schritt 127 die Zustandsvariable 32 gleich dem "ERROR"-Zustand ("FEHLER"-Zustand) eingestellt. In einem Schritt 128 wird die Verbindung geschlossen. In dem Schritt 128 kann die Verbindung durch das Durchführen einer Schließoperation auf dem Datei-Deskriptor fp1 35 der Server-Struktur 30 geschlossen werden. Im Schritt 129 wird bestimmt, ob eine weitere Adresse für den Server verfügbar ist. Wenn dies der Fall ist, wird die Statusvariable 32 auf den "NO_CONNECTION"-Zustand eingestellt, um der Routine prcmd() 11 anzuzeigen, zu versuchen, beim nächsten Aufruf der Routine prcmd() 11 eine neue Verbindung zwischen dem Client und dem Server einzurichten. Wenn keine andere Adresse verfügbar ist, wird im Schritt 129 ein Rücksprung vom Schritt 110 bewirkt.
  • Die read_wait_routine() 114 (14) ist detailliert in 20 gezeigt. In einem Schritt 160 wird bestimmt, ob die Verbindung für ein Lesen bereit ist. Wenn dies nicht der Fall ist, wird im Schritt 160 ein Rücksprung des Schritts 114 bewirkt. Wenn die Verbindung für ein Lesen bereit ist, springt die Routine vom Schritt 160 zu einem Schritt 161, in dem die Statusvariable 32 der Server-Struktur 30 gleich dem "READ_READY"-Zustand eingestellt wird.
  • Die read_ready_routine() 115 (14) ist detailliert in 21 gezeigt. In einem Schritt 165 wird bestimmt, ob die Verbindung für ein Lesen bereit ist. Wenn dies der Fall ist, wird im Schritt 165 ein Rücksprung des Schritts 115 bewirkt. Andernfalls springt die Routine vom Schritt 165 zu einem Schritt 166, in dem die Statusvariable 32 der Server-Struktur 30 gleich dem "READ-WAIT"-Zustand eingestellt wird.
  • Bei dem bevorzugten zweiten Ausführungsbeispiel wird im Schritt 98 (11) bestimmt, welche Routine gemäß der Statusvariable 32 der Server-Struktur 30 aufgerufen werden soll. 15 zeigt einen Schaltbefehl, der in der Programmiersprache C geschrieben ist, der bestimmt, welche Routine aufgerufen werden soll. Wenn die Statusvariable 32 gleich dem "CONNECT_1"-Zustand ist, wird im Schritt 98 die Routine connect_1() 111 aufgerufen. Wenn die Statusvariable 32 gleich dem "CONNECT_2"-Zustand ist, wird im Schritt 98 connect2_routine() 112 aufgerufen. Wenn die Statusvariable 32 gleich dem "CONNECT_3"-Zustand ist, wird im Schritt 98 connect3_routine() 113 aufgerufen. Wenn die Statusvariable 32 gleich dem "READ_WAIT"-Zustand ist, wird im Schritt 98 read_wait_routine() 114 aufgerufen. Wenn die Statusvariable 32 gleich dem "READ_READY"-Zustand ist, wird im Schritt 98 read_ready_routine() 115 aufgerufen. Aus einem Vergleich von 14 mit 15 sollte offensichtlich sein, daß sich das bevorzugte zweite Ausführungsbeispiel des Schritts 98 von dem ersten Ausführungsbeispiel des Schritts 98 darin unterscheidet, daß es connect2_routine() 112 und connect3_routine() 113 aufweist. Außerdem ist connect1_routine() 110 durch connect1_routine() 111 ersetzt ist. Die Modifikationen und Zusätze passen das Protokoll remsh an, derart, daß die Routine prcmd() 11 unter Verwendung des Dämons inetd und des Dämons remshd eine Verbindung zu einem Server herstellen kann. Dies liefert den Vorteil, daß es nicht erforderlich ist, daß der Benutzer einen Dämon für den Server schreibt, ebenso wie es die zusätzlichen Vorteile des Verwendens eines Standarddienstes liefert, der eine Zugriffssteuerung, eine Befehlslinien-Benutzeroberflächen-Interpretation (command line shell interpretation) und ein Standardfehlertor liefert.
  • 17 zeigt connect1_routine() 111 (15) für das bevorzugte zweite Ausführungsbeispiel. Der Zeitablaufzweig 132 für connect1_routine() 111 ist der gleiche wie der Zeitablaufzweig 131 für connect1_routine() 110 (vergleiche 17 mit 16), mit der Ausnahme, daß beide Verbindungen, die fp1 35 und fp2 36 zugeordnet sind, geschlossen sind, und wird nicht weiter erläutert. Wenn im Schritt 120 bestimmt wird, daß die Verbindung zwischen dem Client 22 und dem Server nicht für ein Schreiben bereit ist, springt die Routine vom Schritt 120 zu dem Zeitablaufzweig 132. Andernfalls springt die Routine vom Schritt 120 zu einem Schritt 121. Im Schritt 121 wird versucht, eine Fehlerverbindung zwischen dem Client 22 und dem Server einzurichten. In einem Schritt 122 werden Standardzugriffs-Steuerinformationen und der Fernbefehl, der durch den port_or_command-Zeiger 34 der Server-Struktur 30 angezeigt ist, geschrieben. Im Schritt 123 wird die Zustandsvariable 32 gleich dem "CONNECT_2"-Zustand eingestellt. Im Schritt 125 wird timeout_clock 33 der Server-Struktur 30 rückgesetzt.
  • Die Routine connect2-routine() 112 (15) ist in 18 gezeigt. In einem Schritt 140 wird bestimmt, ob die Fehlerverbindung für ein Lesen bereit ist. Wenn dies der Fall ist, wird im Schritt 141 die Fehlerverbindung angenommen. Der Schritt 141 kann unter Verwendung der Routine accept(), die durch das UNIX-Betriebssystem geliefert wird, implementiert sein. Der Schritt 141 schließt außerdem das Speichern eines Dateizeigers auf den Fehlerstrom in dem Dateizeiger fp2 36 der Server-Struktur 30 für einen Zugriff durch das Aufrufprogramm 12 (siehe 3 und 4) ein. Ein Schritt 142 stellt die Statusvariable 32 der Server-Struktur 30 gleich dem "CONNECT_3"-Zustand ein. In einem Schritt 143 wird timeout_clock 33 der Server-Struktur 30 rückgesetzt. Wenn im Schritt 140 bestimmt wird, daß die Fehlerverbindung nicht bereit für ein Lesen ist, wird in einem Schritt 144 bestimmt, ob fp1 35 bereit für ein Lesen ist. Wenn fp1 35 bereit für ein Lesen ist, was bedeutet, daß der Dämon remshd eine Fehlermeldung zurückgegeben hat, springt die Routine vom Schritt 144 zu einem Schritt 146, in dem die Statusvariable 32 der Server-Struktur 30 gleich dem "ERROR"-Zustand eingestellt wird. Wenn fp1 35 nicht bereit für ein Lesen ist, wird in einem Schritt 145 bestimmt, ob eine Zeitablaufbedingung aufgetreten ist. Wenn keine Zeitablaufbedingung aufgetreten ist, wird im Schritt 145 ein Rücksprung des Schritts 112 bewirkt. Andernfalls springt die Routine vom Schritt 145 zum Schritt 146. Im Schritt 156 wird die Statusvariable 32 gleich dem "ERROR"-Zustand eingestellt. In einem Schritt 147 werden die Verbindungen geschlossen. In einem Schritt 158 wird bestimmt, ob eine weitere Adresse für den Server verfügbar ist. Wenn dies nicht der Fall ist, wird im Schritt 148 ein Rücksprung des Schritts 112 bewirkt. Andernfalls springt die Routine vom Schritt 148 zu einem Schritt 149, in dem die Statusvariable 32 gleich dem "NO_CONNECTION"-Zustand eingestellt wird.
  • 19 zeigt connect3_routine() 113 (15). In einem Schritt 150 wird bestimmt, ob die Verbindung bereit für ein Lesen ist. Wenn dies der Fall ist, wird in einem Schritt 151 der Client 22 für ein Lesen vorbereitet. Beispielsweise sendet das Protokoll remsh ein Null-Byte zu dem Client 22 zurück, bevor der Datenstrom gesendet wird. Der Schritt 151 kann den Schritt des Verarbeitens des Null-Bytes (d.h. des Lesens und des Löschens des Null-Bytes) oder alternativ des Bestimmens, ob das erste Byte das Null-Byte ist, aufweisen, und wenn dies nicht der Fall ist, das Einstellen der Statusvariable 32 auf den "ERROR"-Zustand, um einen remshd-Dämon-Ausfall anzuzeigen und einen Rücksprung vom Schritt 113 zu bewirken. In einem Schritt 152 wird die Statusvariable 32 gleich dem "READ_WAIT"-Zustand eingestellt. In einem Schritt 158 wird timeout_clock 33 rückgesetzt. Wenn die Verbindung nicht für ein Lesen bereit ist, springt die Routine vom Schritt 150 zu einem Schritt 153, in dem bestimmt wird, ob eine Zeitablaufbedingung aufgetreten ist. Wenn dies nicht der Fall ist, wird im Schritt 153 ein Rücksprung vom Schritt 113 bewirkt. Andernfalls springt die Routine vom Schritt 153 zu einem Schritt 154. Im Schritt 154 wird die Statusvariable 32 gleich dem "ERROR"-Zustand eingestellt. In einem Schritt 155 werden die Verbindungen geschlossen. In einem Schritt 156 wird bestimmt, ob eine weitere Adresse für den Server verfügbar ist. Wenn keine weitere Adresse verfügbar ist, wird im Schritt 156 ein Rücksprung vom Schritt 113 bewirkt.
  • Andernfalls springt die Routine vom Schritt 156 zu einem Schritt 157, in dem die Statusvariable 32 gleich dem "NO_CONNECTION"-Zustand eingestellt wird.
  • Die read_wait_routine() 114 und read_ready_routine() 115 für das bevorzugte zweite Ausführungsbeispiel sind in den 20 bzw. 21 dargestellt und oben beschrieben. Diese beiden Routinen sind die gleichen wie für das erste Ausführungsbeispiel.
  • Es sei bemerkt, daß das Aufrufprogramm 12 fortfahren kann, die Routine prcmd() 11 aufzurufen, um jede sich ergebende Konversation mit dem Fernbefehl oder dem Kunden-Dämon auf einem spezifischen Server zu leiten.
  • Zahlreiche Verbesserungen sind zu erkennen und sind dazu bestimmt, innerhalb des Bereichs der Erfindung zu liegen. Beispielsweise kann der Schritt des Rücksetzens von timeout_clock 33 der Server-Struktur 30 einfach das Kopieren der aktuellen Zeit des Clients 22 in timeout_clock 33 einschließen. Dann kann in dem Schritt des Bestimmens, ob eine Zeitablaufbedingung aufgetreten ist, die aktuelle Zeit des Clients 22 mit der vorher gespeicherten aktuellen Zeit in timeout_clock 33 verglichen werden. wenn der Unterschied zwischen der aktuellen Zeit, die gegenwärtig durch den Client 22 angezeigt wird, und der vorher gespeicherten aktuellen Zeit in timeout_clock 33 größer als eine vorbestimmte Schwelle ist, beispielsweise 30 Sekunden, schließt die Routine prcmd() 11 daraus, daß eine Zeitablaufbedingung aufgetreten ist. Wenn der Unterschied kleiner als oder gleich der vorbestimmten Schwelle ist, bestimmt die Routine prcmd() 11, daß keine Zeitablaufbedingung aufgetreten ist.
  • Außerdem kann das Ablaufzeitintervall durch das Aufrufprogramm 12 einstellbar sein.
  • Zusätzlich kann die Routine prcmd() 11 weite robustere Fehleranzeigemerkmale aufweisen. Beispielsweise kann der Schritt des Einstellens der Statusvariable 32 gleich dem "ERROR"-Zustand nach dem Bestimmen, daß eine Zeitablaufbedingung aufgetreten ist, durch einen Schritt des Einstellens der Statusvariable 33 gleich einem "TIMEOUT_ERROR"-Zustand ("ZEITABLAUF_FEHLER"-Zustand) ersetzt werden. Außerdem kann, wenn im Schritt 144 (siehe 18) bestimmt wird, daß stdout für ein Lesen bereit ist, die Routine vom Schritt 144 zu einem unabhängigen Schritt des Einstellens der Statusvariable 32 gleich einem "REMSHD_ERROR"-Zustand und des Aufzeichnens der Fehlermeldung von remshd springen. Folglich ermöglicht die Verwendung von detaillierteren Fehlerzuständen, daß das Aufrufprogramm besser identifiziert, wo Probleme auftreten.
  • Ferner ist server_identifier 31 der Server-Struktur 30 ein Zeiger auf eine Zeichenfolge. Jedoch kann dieser Zeiger durch eine Zeichenfolge ersetzt werden, um einen Umwegpegel zu beseitigen. In gleicher Weise kann der port_or-command-Zeiger 34 für das erste Ausführungsbeispiel bzw. das zweite Ausführungsbeispiel durch entweder einen Wert oder eine Zeichenfolge ersetzt werden, um einen Umwegpegel zu beseitigen.
  • Ferner ist die Routine prcmd() 11 bei einem bevorzugten Ausführungsbeispiel in der Programmiersprache C geschrieben. Jedoch kann die Routine prcmd() 11 unter Verwendung anderer Sprachen, beispielsweise FORTRAN oder PASCAL implementiert sein, oder sogar unter Verwendung von einer objektorientierten Sprache, beispielsweise C++ oder ADA.
  • Die Routine prcmd() 11, wie oben beschrieben, ist unter Verwendung von BSD-Sockeln implementiert. Alternativ kann die Routine prcmd() 11 unter Verwendung eines beliebigen Verbindungsprotokolls implementiert werden, das eine Verbindungsvorrichtung verwendet, beispielsweise DCE-Dienste (DCE = Distributed Computing Environment = verteilte Computerumgebung).
  • Des weiteren kann die Routine prcmd() 11 beim Erfassen eines Fehlers zwischen dem Client und einem speziellen Server unmittelbar versuchen, eine andere Verbindung zu dem Server einzurichten, statt nur die Statusvariable 32 der zugeordneten Server-Struktur 30 gleich dem "NO_CONNECTION"-Zustand einzustellen (siehe beispielsweise den Schritt 130 in den 16 und 17). Die Routine prcmd() 11 sollte verifizieren, daß zumindest eine zusätzliche unversuchte Internet-Adresse für den Server verfügbar ist, bevor unmittelbar versucht wird, eine andere Verbindung neu einzurichten.
  • Ferner sollte offensichtlich sein, daß einige der Schritte, die nacheinander stattfinden, in einer unterschiedlichen Reihenfolge durchgeführt werden können. Beispielsweise können die Schritte 76 bis 78 in 7 in einer unterschiedlichen Reihenfolge durchgeführt werden und ergeben noch den gleichen Betrieb.
  • Das zweite Ausführungsbeispiel der Routine prcmd() 11 erfordert die Verwendung von Reservierungstoren, um das Protokoll remshd zu unterstützen. Dagegen erfordert das erste Ausführungsbeispiel nicht die Verwendung der Reservierungstore, da das erste Ausführungsbeispiel Konversationen mit kundenspezifischen Server-seitigen Dämonen führt.
  • Die Routine prcmd() 11 umfaßt bei dem zweiten Ausführungsbeispiel das Senden von Zugriffssteuerinformationen, wie es durch das Protokoll remshd erforderlich ist. Obwohl es bei dem ersten Ausführungsbeispiel nicht erforderlich ist, ähnliche Steuerüberprüfungen, die durch das Protokoll remsh geboten werden, zu implementieren, kann das erste Ausführungsbeispiel die Steuerüberprüfungen implementieren, wenn dieselben erwünscht sind. Beispielsweise kann die Verwendung von Steuerüberprüfungen besonders wichtig sein, wenn die Netzwerksicherheit strittig ist.
  • Darüber hinaus liefert das Protokoll remshd ein Fehlerverbindungsmerkmal. Speziell richtet der Dämon remsh, der auf dem Server läuft, typischerweise eine Fehlerverbindung von dem Server zurück zu dem Client ein. Jedoch kann gemäß dem Protokoll remsh dem Dämon remsh befohlen werden, die Fehlerverbindung nicht einzurichten, wenn eine Null-Tornummer von dem Client empfangen wird. Dies liefert die Option, das Fehlerverbindungsmerkmal nicht zu verwenden. Das zweite Ausführungsbeispiel der Erfindung kann ermöglichen, daß das Aufrufprogramm das Fehlerverbindungsmerkmal unter Verwendung eines Funktionsparameters deaktiviert, um der Routine prcmd() 11 anzuzeigen, daß die Fehlerverbindung nicht erwünscht ist. In dieser Situation ist der Datei-Deskriptor fp2 36 unnötig. Folglich ist der Datei-Deskriptor fp2 36 optional.
  • Ferner kann die Routine prcmd() 11 verbessert werden, indem ein Merkmal hinzugefügt wird, das Zeitabläufe erfaßt, die während sich ergebender Konversationen zwischen dem Aufrufprogramm 12 und den Fernbefehl- oder Kunden-Dämonen auf dem einen oder den mehreren Servern 23 auftreten.

Claims (23)

  1. Verfahren zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem (1, 22) und jedem einer Mehrzahl von Server-Computersystemen (23) gekennzeichnet durch folgende Schritte A. Bereitstellen (50) einer Mehrzahl von Server-Systemdatenstrukturen (30, 40) im Client-Computersystem (1, 22), wobei jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) einem der Mehrzahl von Server-Computersystemen (23) zugeordnet ist und einen Statusanzeiger aufweist, der einen Wert speichert, der einen Verbindungszustand anzeigt, der zwischen dem Client-Computersystem (1, 22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) existiert; B. für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), Zugreifen auf den Statusanzeiger durch das Client-Computersystem, Bestimmen, ob der Statusanzeiger eine eingerichtete Verbindung anzeigt, falls der Statusanzeiger keine Verbindung anzeigt, Versuchen, eine Verbindung zwischen dem Client-Computersystem (1, 22) und dem zugeordneten der Mehrzahl von Server-Computersystem (23) einzurichten, und Einstellen des Statusanzeigers auf einen Wert, der anzeigt, daß eine Verbindung eingerichtet wird, wobei die einzurichtende Verbindung ein Weiterstellen durch eine Mehrzahl von Verbindungszuständen zwischen dem Client-Computersystem (1, 22) und dem zugeordneten einen der Mehrzahl von Server-Computersystemen (23) darstellt, wobei jeder Verbindungszustand einen Fortschritt im Verbindungsaufbau anzeigt; und C. für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Statusanzeiger aufweist, der einen Wert speichert, der anzeigt, daß eine Verbindung eingerichtet wird, Versuchen, den Verbindungszustand zu einem nächsten Verbindungszustand beim Verbindungsaufbau zwischen dem Client-Computersystem (1, 22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) weiterzustellen, und Aktualisieren des Statusanzeigers, wenn der Verbindungszustand zwischen dem Client-Computersystem (1, 22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) auf den nächsten Verbindungszustand weitergestellt wurde.
  2. Verfahren gemäß Anspruch 1, bei dem der Schritt B folgenden Schritt aufweist: Aktualisieren, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Statusanzeiger aufweist, der einen Wert speichert, der keine Verbindung anzeigt, des Statusanzeigers, um einen Wert zu speichern, der eine eingerichtete Verbindung anzeigt, wenn eine Verbindung eingerichtet ist.
  3. Verfahren gemäß Anspruch 2, bei dem der Schritt C folgende Schritte aufweist: Auswählen, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Statusanzeiger aufweist, der einen Wert speichert, der anzeigt, daß die Verbindung eingerichtet wird, einer aus einer Mehrzahl von Weiterstellaktivitäten gemäß dem Wert, der in dem Statusanzeiger gespeichert ist, und Ausführen der ausgewählten Weiterstellaktivitäten.
  4. Verfahren gemäß Anspruch 3, das ferner folgenden Schritt aufweist: erneutes Versuchen, wenn ein Fehler in der Verbindung zwischen dem Client-Computersystem (1, 22) und einem der Mehrzahl von Server-Computersystemen (23) auftritt, eine neue Verbindung zwischen dem Client-Computersystem (1, 22) und dem einen der Mehrzahl von Server-Computersystemen (23) einzurichten.
  5. Verfahren gemäß Anspruch 3, bei dem der Schritt B ferner folgenden Schritt aufweist: Versuchen, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Statusanzeiger aufweist, der einen Wert speichert, der keine Verbindung anzeigt, eine Antwort durch einen Dämon remsh aufzurufen, der auf dem zugeordneten der Mehrzahl von Server-Computersystemen (23) läuft.
  6. Verfahren gemäß einem der Ansprüche 3 bis 5, bei dem jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) ferner einen Fernbefehl aufweist, und bei dem zumindest eine der Mehrzahl von Weiterstellaktivitäten folgenden Schritt aufweist: Senden des Fernbefehls zu dem zugeordneten der Mehrzahl von Server-Computersystemen (23).
  7. Das Verfahren gemäß einem der Ansprüche 3 bis 6, bei dem zumindest eine der Mehrzahl von Weiterstellaktivitäten folgenden Schritt aufweist: Annehmen einer Fehlerverbindung, die zwischen dem Client-Computersystem (1, 22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) eingerichtet ist.
  8. Verfahren gemäß einem der Ansprüche 3 bis 7, bei dem jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) ferner einen Zeitablauftakt aufweist, und bei dem zumindest eine der Mehrzahl von Weiterstellaktivitäten folgenden Schritt aufweist: Rücksetzen des Zeitablauftakts von einer der Mehrzahl von Server-Systemdatenstrukturen (30, 40), wenn der Verbindungszustand zwischen dem Client-Computersystem (1, 22) und dem Server-Computersystem (23), das der einen der Mehrzahl von Server-Systemdatenstrukturen (30, 40) zugeordnet ist, weitergestellt ist.
  9. Verfahren gemäß einem der Ansprüche 1 bis 8, bei dem jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) ferner einen Beenden-Anzeiger aufweist, wobei das Verfahren ferner folgenden Schritt aufweist: Beenden der Verbindung zwischen dem Client-Computersystem (1, 22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Beenden-Anzeiger aufweist, der einen Wert speichert, der eine Beenden-Anforderung anzeigt.
  10. Verfahren gemäß einem der Ansprüche 1 bis 9, bei dem sowohl der Schritt B als auch der Schritt C nicht-blockierende Systemaufrufe aufweisen.
  11. Verfahren gemäß einem der Ansprüche 1 bis 10, bei dem der Schritt B folgenden Schritt aufweist: Versuchen, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Statusanzeiger aufweist, der einen wert speichert, der keine Verbindung anzeigt, eine Verbindung zwischen dem Client-Computersystem (1, 22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) einzurichten, ausschließlich wenn ausreichend Betriebsmittel auf dem Client-Computersystem (1, 22) existieren.
  12. verfahren gemäß Anspruch 1, bei dem der Schritt B folgende Schritte aufweist: Lesen des Statusanzeigers einer der Mehrzahl der Server-Systemdatenstrukturen; wenn der gelesene Statusanzeiger anzeigt, daß keine Verbindung zwischen dem Client-Computersystem und dem zugeordneten Server-Computersystem existiert, Herstellen einer Netzwerkverbindung zwischen dem Client-Computersystem und dem zugeordneten Server-Computersystem, und Speichern eines Wertes in dem Statusanzeiger der einen der Mehrzahl der Server-Systemdatenstrukturen, der anzeigt, daß die Netzwerkverbindung zwischen dem Client-Computersystem und dem zugeordneten Server-Computersystem existiert; und wenn der gelesene Statusanzeiger anzeigt, daß zwischen dem Client-Computersystem und dem Server-Computersystem bereits eine Netzwerkverbindung existiert, Beibehalten des Wertes in dem Statusanzeiger der einen der Mehrzahl der Server-Systemdatenstrukturen, welcher anzeigt, daß zwischen dem Client-Computersystem und dem zugeordneten Server-Computersystem eine Netzwerkverbindung existiert.
  13. Vorrichtung zum Einrichten und Verwalten einer Verbindung mit jedem einer Mehrzahl von Server-Computersystemen (23) in einem Computernetzwerk mit folgenden Merkmalen: einem elektronischen Digitalcomputer (1), der einen Prozessor (3), einen Speicher (4) und eine Netzwerkschnittstelle (7) aufweist, wobei der Computer (1) als ein Client-Computersystem (22) wirksam ist, und ferner folgende Merkmale aufweist: eine Einrichtung zum Bereitstellen (50) einer Mehrzahl von Server-Systemdatenstrukturen (30, 40), wobei jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) einem der Mehrzahl von Server-Computersystemen (23) zugeordnet ist und einen Statusanzeiger aufweist, der einen Wert speichert, der einen Verbindungszustand anzeigt, der zwischen dem Client-Computersystem (22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) existiert; eine Einrichtung, um zu versuchen, eine Verbindung zwischen dem Client-Computersystem (22) und dem zugeordneten der Mehrzahl von Server-Computersystem (23) einzurichten, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) mit einem Statusanzeiger, auf den durch das Client-Computersystem zugegriffen wird und für den bestimmt wird, das derselbe keine Verbindung anzeigt, und den Statusanzeiger auf einen Wert einzustellen, der anzeigt, daß eine Verbindung eingerichtet wird, wobei die einzurichtende Verbindung ein Weiterstellen durch eine Mehrzahl von Verbindungszuständen zwischen dem Client-Computersystem (22) und dem zugeordneten einen der Mehrzahl von Server-Computersystemen (23) darstellt, wobei jeder Verbindungszustand einen Fortschritt im Verbindungsaufbau anzeigt; und eine Einrichtung, um zu versuchen, den Verbindungszustand zu einem nächsten Verbindungszustand beim Verbindungsaufbau zwischen dem Client-Computersystem (22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) weiterzustellen, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), deren Statusanzeiger einen Wert speichert, der anzeigt, daß eine Verbindung eingerichtet wird, und den Statusanzeiger zu aktualisieren, wenn der Verbindungszustand zwischen dem Client-Computersystem (22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) auf den nächsten Verbindungszustand weitergestellt wurde.
  14. Vorrichtung gemäß Anspruch 13, bei der die Einrichtung zum Versuchen, eine Verbindung einzurichten, folgendes Merkmal aufweist: eine Einrichtung zum Aktualisieren des Statusanzeigers, um einen Wert zu speichern, der eine eingerichtete Verbindung anzeigt, wenn eine Verbindung eingerichtet ist, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Statusanzeiger aufweist, der einen Wert speichert, der keine Verbindung anzeigt.
  15. Vorrichtung gemäß Anspruch 14, bei der die Einrichtung zum Versuchen und Aktualisieren folgende Merkmale aufweist: eine Einrichtung zum Auswählen einer aus einer Mehrzahl von Weiterstellaktivitäten gemäß dem Wert, der in dem Statusanzeiger gespeichert ist, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Statusanzeiger aufweist, der einen Wert speichert, der anzeigt, daß eine Verbindung eingerichtet wird; und eine Einrichtung zum Ausführen der ausgewählten Weiterstellaktivitäten.
  16. Vorrichtung gemäß Anspruch 15, bei der jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) ferner einen Zeiger auf eine Ansammlung von Server-Computersystem-Adressen aufweist, und bei der zumindest eine der Weiterstellaktivitäten folgendes Merkmal aufweist: eine Funktion, die versucht, wenn ein Fehler in der Verbindung zwischen dem Client-Computersystem (22) und einem der Mehrzahl von Server-Computersystemen (23) auftritt, eine neue Verbindung zwischen dem Client-Computersystem (22) und dem einen der Mehrzahl von Server-Computersystemen (23) einzurichten, wenn eine der Ansammlung von Server-Computersystem-Adressen noch nicht versucht wurde.
  17. Vorrichtung gemäß Anspruch 15 oder 16, bei der die Einrichtung zum Versuchen, eine Verbindung einzurichten, ferner folgendes Merkmal aufweist: eine Einrichtung zum Versuchen, eine Antwort durch einen Dämon remsh aufzurufen, der auf dem zugeordneten der Mehrzahl von Server-Computersystemen (23) läuft, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Statusanzeiger aufweist, der einen Wert speichert, der keine Verbindung anzeigt.
  18. Vorrichtung gemäß einem der Ansprüche 15 bis 17, bei der jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) ferner einen Fernbefehl aufweist, und bei der zumindest eine der Mehrzahl von Weiterstellaktivitäten folgendes Merkmal aufweist: eine Funktion, die den Fernbefehl zu dem zugeordneten der Mehrzahl von Server-Computersystemen (23) sendet.
  19. Die Vorrichtung gemäß einem der Ansprüche 15 bis 18, bei der zumindest eine der Mehrzahl von Weiterstellaktivitäten folgendes Merkmal aufweist: eine Funktion, die eine Fehlerverbindung, die zwischen dem Client-Computersystem (22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) eingerichtet ist, annimmt.
  20. Vorrichtung gemäß einem der Ansprüche 15 bis 19, bei der jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) ferner einen Zeitablauftakt aufweist, und bei der zumindest eine der Mehrzahl von Weiterstellaktivitäten folgendes Merkmal aufweist: eine Funktion, die den Zeitablauftakt von einer der Mehrzahl von Server-Systemdatenstrukturen (30, 40) rück setzt, wenn der Verbindungszustand zwischen dem Client-Computersystem (22) und dem Server-Computersystem (23), das der einen der Mehrzahl von Server-Systemdatenstrukturen (30, 40) zugeordnet ist, weitergestellt ist.
  21. Vorrichtung gemäß einem der Ansprüche 13 bis 20, bei der jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40) ferner einen Beenden-Anzeiger aufweist, wobei die Vorrichtung ferner folgendes Merkmal aufweist: eine Einrichtung zum Beenden der Verbindung zwischen dem Client-Computersystem (22) und den zugeordneten der Mehrzahl von Server-Computersystemen (23), für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Beenden-Anzeiger aufweist, der einen Wert speichert, der eine Beenden-Anforderung anzeigt.
  22. Vorrichtung gemäß einem der Ansprüche 13 bis 21, bei der sowohl die Einrichtung zum Versuchen, eine Verbindung einzurichten, als auch die Einrichtung zum Versuchen und Aktualisieren nicht-blockierende Systemaufrufe aufweisen.
  23. Vorrichtung gemäß einem der Ansprüche 13 bis 22, bei der die Einrichtung zum Versuchen, eine Verbindung einzurichten, folgendes Merkmal aufweist: eine Einrichtung zum Versuchen, für jede der Mehrzahl von Server-Systemdatenstrukturen (30, 40), die einen Statusanzeiger aufweist, der einen Wert speichert, der keine Verbindung anzeigt, eine Verbindung zwischen dem Client-Computersystem (22) und dem zugeordneten der Mehrzahl von Server-Computersystemen (23) einzurichten, ausschließlich wenn ausreichend Betriebsmittel in dem Client-Computersystem (22) existieren.
DE19605093A 1995-02-27 1996-02-12 Verfahren und Vorrichtung zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und jedem einer Mehrzahl von Server-Computersystemen Expired - Fee Related DE19605093B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/394,997 US5758084A (en) 1995-02-27 1995-02-27 Apparatus for parallel client/server communication having data structures which stored values indicative of connection state and advancing the connection state of established connections
US394997 1995-02-27

Publications (2)

Publication Number Publication Date
DE19605093A1 DE19605093A1 (de) 1996-08-29
DE19605093B4 true DE19605093B4 (de) 2005-06-23

Family

ID=23561273

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19605093A Expired - Fee Related DE19605093B4 (de) 1995-02-27 1996-02-12 Verfahren und Vorrichtung zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und jedem einer Mehrzahl von Server-Computersystemen

Country Status (4)

Country Link
US (1) US5758084A (de)
JP (1) JPH08272724A (de)
DE (1) DE19605093B4 (de)
GB (1) GB2298298B (de)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181525B1 (en) 1996-08-05 2007-02-20 Computer Associates Think, Inc. Dynamic method for connecting a client to a server application
US6073177A (en) * 1997-08-05 2000-06-06 Sterling Software, Inc. Dynamic method for connecting a client to a server application
US6102965A (en) * 1996-09-23 2000-08-15 National Instruments Corporation System and method for providing client/server access to graphical programs
US6437805B1 (en) 1996-09-23 2002-08-20 National Instruments Corporation System and method for accessing object capabilities in a graphical program
KR19980034552A (ko) * 1996-11-07 1998-08-05 김광호 소켓기능을 이용한 통신시스템의 소켓바인딩 방법
JP3652834B2 (ja) * 1997-04-30 2005-05-25 富士通株式会社 クライアント主導のネットワーク・コンピューティングシステムおよび方法
US8516132B2 (en) 1997-06-19 2013-08-20 Mymail, Ltd. Method of accessing a selected network
US6571290B2 (en) 1997-06-19 2003-05-27 Mymail, Inc. Method and apparatus for providing fungible intercourse over a network
US7167927B2 (en) * 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US6470415B1 (en) 1999-10-13 2002-10-22 Alacritech, Inc. Queue system involving SRAM head, SRAM tail and DRAM body
US6658480B2 (en) 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
US7237036B2 (en) * 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US6389479B1 (en) 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6757746B2 (en) * 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US8782199B2 (en) 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US6591302B2 (en) 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US7133940B2 (en) * 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US7076568B2 (en) * 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US7185266B2 (en) 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US6687758B2 (en) * 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6427171B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US7042898B2 (en) 1997-10-14 2006-05-09 Alacritech, Inc. Reducing delays associated with inserting a checksum into a network message
US7174393B2 (en) 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US6427173B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
US6697868B2 (en) * 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US7089326B2 (en) * 1997-10-14 2006-08-08 Alacritech, Inc. Fast-path processing for receiving data on TCP connection offload devices
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US7284070B2 (en) * 1997-10-14 2007-10-16 Alacritech, Inc. TCP offload network interface device
US6219693B1 (en) * 1997-11-04 2001-04-17 Adaptec, Inc. File array storage architecture having file system distributed across a data processing platform
JP3569122B2 (ja) * 1998-01-22 2004-09-22 富士通株式会社 セッション管理システム、サービス提供サーバ、セッション管理サーバ、セッション管理方法及び記録媒体
EP1086560A1 (de) * 1998-06-19 2001-03-28 Netsafe, Inc. Verfahren und einrichtung zur herstellung von verbindungen über ein netz
US6496862B1 (en) 1998-08-25 2002-12-17 Mitsubishi Electric Research Laboratories, Inc. Remote monitoring and control of devices connected to an IEEE 1394 bus via a gateway device
US6505255B1 (en) 1999-04-29 2003-01-07 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Method for formatting and routing data between an external network and an internal network
US7664883B2 (en) * 1998-08-28 2010-02-16 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
US6631409B1 (en) * 1998-12-23 2003-10-07 Worldcom, Inc. Method and apparatus for monitoring a communications system
DE19910863A1 (de) * 1999-03-11 2000-09-21 Siemens Ag Vorrichtung und Verfahren zum Verarbeiten von Aufträgen
US6523064B1 (en) 1999-04-29 2003-02-18 Mitsubishi Electric Research Laboratories, Inc Network gateway for collecting geographic data information
US6378000B1 (en) 1999-04-29 2002-04-23 Mitsubish Electric Research Laboratories, Inc Address mapping in home entertainment network
US6633547B1 (en) 1999-04-29 2003-10-14 Mitsubishi Electric Research Laboratories, Inc. Command and control transfer
US6859836B2 (en) * 2000-03-29 2005-02-22 Massoud Alibakhsh System and method for providing look ahead socket generation
US6769023B1 (en) 2000-05-31 2004-07-27 International Business Machines Corporation Facility for managing a service connection between a client process having a single threaded library and a server process
US8019901B2 (en) * 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US6720074B2 (en) * 2000-10-26 2004-04-13 Inframat Corporation Insulator coated magnetic nanoparticulate composites with reduced core loss and method of manufacture thereof
US7089311B2 (en) * 2001-01-31 2006-08-08 International Business Machines Corporation Methods, systems and computer program products for resuming SNA application-client communications after loss of an IP network connection
US20020188666A1 (en) * 2001-05-23 2002-12-12 Lemon Michael J. Lightweight dynamic service conversation controller
US20030121835A1 (en) * 2001-12-31 2003-07-03 Peter Quartararo Apparatus for and method of sieving biocompatible adsorbent beaded polymers
US7496689B2 (en) * 2002-04-22 2009-02-24 Alacritech, Inc. TCP/IP offload device
US7543087B2 (en) * 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US7191241B2 (en) * 2002-09-27 2007-03-13 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7337241B2 (en) * 2002-09-27 2008-02-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US20040088262A1 (en) * 2002-11-06 2004-05-06 Alacritech, Inc. Enabling an enhanced function of an electronic device
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
US8787393B2 (en) 2005-04-11 2014-07-22 International Business Machines Corporation Preventing duplicate sources from clients served by a network address port translator
US7738500B1 (en) 2005-12-14 2010-06-15 Alacritech, Inc. TCP timestamp synchronization for network connections that are offloaded to network interface devices
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US8341286B1 (en) 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4982187A (en) * 1989-11-28 1991-01-01 International Business Machines Corporation Low-end high-performance switch subsystem architecture
EP0467546A2 (de) * 1990-07-18 1992-01-22 International Computers Limited Verteilte Datenverarbeitungssysteme
US5355453A (en) * 1989-09-08 1994-10-11 Auspex Systems, Inc. Parallel I/O network file server architecture
WO1995000905A1 (en) * 1993-06-28 1995-01-05 Dow Benelux N.V. Advanced program-to-program communication server

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2260140B1 (de) * 1974-02-01 1977-09-16 Honeywell Bull Soc Ind
AU601328B2 (en) * 1988-05-26 1990-09-06 Digital Equipment Corporation Temporary state preservation for a distributed file service
US5226159A (en) * 1989-05-15 1993-07-06 International Business Machines Corporation File lock management in a distributed data processing system
US5257369A (en) * 1990-10-22 1993-10-26 Skeen Marion D Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5218680A (en) * 1990-03-15 1993-06-08 International Business Machines Corporation Data link controller with autonomous in tandem pipeline circuit elements relative to network channels for transferring multitasking data in cyclically recurrent time slots
US5218697A (en) * 1990-04-18 1993-06-08 Microsoft Corporation Method and system for networking computers having varying file architectures
US5276896A (en) * 1990-06-11 1994-01-04 Unisys Corporation Apparatus for implementing data communications between terminal devices and user programs
US5359598A (en) * 1990-06-22 1994-10-25 Unisys Corporation Voice server for digital communication network
JP2925818B2 (ja) * 1991-04-05 1999-07-28 株式会社東芝 並列処理制御装置
US5452454A (en) * 1991-12-10 1995-09-19 Digital Equipment Corporation Generic remote boot for networked workstations by creating local bootable code image
US5434974A (en) * 1992-03-30 1995-07-18 International Business Machines Corporation Name resolution for a multisystem network
US5390328A (en) * 1992-03-30 1995-02-14 International Business Machines Corporation Data processing system and method for providing notification in a central processor of state changes for shared data structure on external storage
US5392400A (en) * 1992-07-02 1995-02-21 International Business Machines Corporation Collaborative computing system using pseudo server process to allow input from different server processes individually and sequence number map for maintaining received data sequence
US5465351A (en) * 1992-08-14 1995-11-07 Noblenet Inc. Client-side memory management process for client-server computing
US5325360A (en) * 1992-12-09 1994-06-28 National Semiconductor Corporation Controllable PCM state machine user interface
US5434775A (en) * 1993-11-04 1995-07-18 The General Hospital Corporation Managing an inventory of devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355453A (en) * 1989-09-08 1994-10-11 Auspex Systems, Inc. Parallel I/O network file server architecture
US4982187A (en) * 1989-11-28 1991-01-01 International Business Machines Corporation Low-end high-performance switch subsystem architecture
EP0467546A2 (de) * 1990-07-18 1992-01-22 International Computers Limited Verteilte Datenverarbeitungssysteme
WO1995000905A1 (en) * 1993-06-28 1995-01-05 Dow Benelux N.V. Advanced program-to-program communication server

Also Published As

Publication number Publication date
JPH08272724A (ja) 1996-10-18
US5758084A (en) 1998-05-26
GB2298298A (en) 1996-08-28
GB9603126D0 (en) 1996-04-17
GB2298298B (en) 1999-12-29
DE19605093A1 (de) 1996-08-29

Similar Documents

Publication Publication Date Title
DE19605093B4 (de) Verfahren und Vorrichtung zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und jedem einer Mehrzahl von Server-Computersystemen
DE69429686T2 (de) Transaktionsverwaltung in objektorientiertem System
DE69228621T2 (de) Objektorientiertes verteiltes Rechnersystem
DE69733305T2 (de) System/Verfahren zur wirkungsvollen Übermittlung von Datenströmen in einem Multimediasystem
DE69702708T2 (de) Verfahren und vorrichtung für klientverwaltete flusssteuerung in einem rechnersystem mit begrenztem speicher
DE69732968T2 (de) System, verfahren und hergestellter gegenstand zur wartung von server-anwendungssoftware der netzwerk-kundenendgeräte und nicht-netzwerk-kundenengeräte
DE69735866T2 (de) Vorrichtung und Verfahren zur Erzeugung von voraussagbaren Antworten
DE60010011T2 (de) Verfahren und Vorrichtung zur Prüfung eines Rechnersystems durch Software-Fehlerinjektion
DE69904190T2 (de) Verfahren und programm zum verarbeiten der verwaltungsanfragen einer verteilten netzwerkanwendung in einer gruppierten rechnerumgebung
DE69834579T2 (de) Http- sitzung- überwachung
DE69636029T2 (de) Verfahren und Vorrichtung zur Datenübertragung
DE60035830T2 (de) Netzwerkgeräteverwaltungsvorrichtung und - verfahren
DE69616178T2 (de) Verfahren und Vorrichtung für eine Navigationsschnittstelle und eine Netzwerkarchitektur, um Operationen auf verteilten Dateien in einem Computernetzwerk auszuführen
DE69730690T2 (de) Verfahren und apparat zum dynamischen austausch von objekt-nachrichten zwischen objekt-modellen
DE69719620T2 (de) Vorrichtung und Verfahren zur Bestimmung von Server-Cluster-Topologien
DE69516634T2 (de) Intelligente Wiederprogrammierung eines Flash-Speichers
DE69220093T2 (de) Verarbeitungsnetzwerk für verteilte anwendungsprogramme.
DE3908459C2 (de) Netzwerkserver
DE69429204T2 (de) Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
DE69735348T2 (de) Skalierbare und erweiterbare Systemverwaltungsarchitektur mit datenlosen Endpunkten
DE69508431T2 (de) Verfahren und vorrichtung für die einfache und sichere verwaltung von entfernten servern
DE68927508T2 (de) Zeitweilige Zustandsbewahrung für einen verteilten Dateidienst
DE69704344T2 (de) Anwendungsprogrammierungsschnittstelle für datenübertragung und busverwaltung über eine busstruktur
DE69326874T2 (de) Server und Klient
DE3853122T2 (de) Vorrichtung und Verfahren zur Verbindung von einer Anwendung einer Zugriffseinrichtung für transparente Dienste mit einer entfernt aufgestellten Quelle.

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee