CX_TCP_CONNECTION
Klassenhierarchie
- CX_CLASS
- CX_TCP_CONNECTION
Beschreibung:
Diese Klasse stellt eine Schnittstelle dar, um von Instant-View aus einfache TCP-Dienste anzusprechen. Die Klasse ist auf das Versenden und Empfangen von einfachen Zeichenketten beschränkt. Binärdaten können mit dieser Klasse nicht übertragen werden. Die Rückgabewerte der meisten Methoden dienen als Kontrollwert, ob der Aufruf erfolgreich war. Liefert solche Methode FALSE, dann kann die konkrete Fehlermeldung mit GetLastError abgefragt werden.
Die CX_TCP_CONNECTION stellt dabei den Client dar und die verbundene Gegenstelle den Server.
Sollte keine Verbindung von ClassiX aus zum gewünschten Dienst aufgebaut werden können, prüfen Sie bitte zuerst, ob es sich um ein generelles Verbindungsproblem handelt, oder um einen Fehler in ClassiX.
Hier ist kurz zusammengefasst, wie Verbindungsprobleme überprüft werden können.
Code-Beispiel:
Damit die folgenden Beispiele funktionieren, müssen die einfach Windows TCP-Dienste aktiviert werden. (Echo, Daytime, Quote of the Day, ...) Dazu unter "Systemsteuerung\Programme\Programme und Funktionen" -> "Windows-Funktionen aktivieren oder deaktivieren" -> "Einfache TCPIP-Dienste" (Hacken setzen). Anschließend den Rechner neustarten, in einer Kommandozeile mit Administratorrechten sc start simptcp eingeben.
Zitat des Tages abfragen:
CreateTransObject(CX_TCP_CONNECTION) -> con
"localhost" 17 con Call(ConnectTo) ifnot { con Call(GetLastError) Attention return } //Open connection
con Call(Read) ifnot { con Call(GetLastError) Attention return } //Read Data
con Call(ResultString) -> quote //Get read data
"Quote of the day:\n" quote + Attention
con Call(CloseConnection)
Anfrage&Antwort beim Echo-Dienst:
CreateTransObject(CX_TCP_CONNECTION) -> con
"localhost" 7 con Call(ConnectTo) ifnot { con Call(GetLastError) Attention return } //Open connection
//Request using Write/Read
"Are you there?" con Call(Write) ifnot { con Call(GetLastError) Attention return } //Send request
con Call(Read) ifnot { con Call(GetLastError) Attention return } //Wait for & read resonse
con Call(ResultString) Attention //Output reply
//Request using Ask
"Are you still there?" con Call(Ask) ifnot { con Call(GetLastError) Attention return } //Send request, wait for response and read it
con Call(ResultString) Attention //Output reply
con Call(CloseConnection)
Funktion | MA* | Parameter | Rückgabe | Kurzbeschreibung |
---|---|---|---|---|
Ask | STRING | INTEGER | Sendet eine Anfrage und wartet auf eine Antwort. | |
CloseConnection | Schließt eine offene Verbindung. | |||
ConnectTo | STRING, INTEGER | INTEGER | Öffnet eine Verbindung mit dem angegebenen Host und Portnummer. | |
GetLastError | STRING | Sollte ein Fehler aufgetreten sein, dann liefert diese Methode die genaue Ursache des Fehlers. | ||
HasData | INTEGER | Prüft, ob Daten am Socket eingegangen sind und damit, ob das nächste Ask oder Read blockieren würde. | ||
IsOpen | INTEGER | Gibt zurück, ob eine Verbindung offen ist. | ||
OpenConnection | INTEGER | Versucht eine geschlossene Verbindung wieder zu öffnen. | ||
Read | INTEGER | Versucht etwas auf dem TCP-Socket zu empfangen. Der Aufruf blockiert so lange, bis etwas empfangen wird. | ||
ResultString | STRING | Liefert den String, der zuvor mit Ask oder Read empfangen wurde. | ||
Write | STRING | INTEGER | Sendet etwas über den TCP-Socket. Diese Methode blockiert nur so lange, bis die Daten in den Sendepuffer übermittelt wurden. |
* MA = Member-Access-Funktion
Datenfeld | Typ | Referenz-Klasse | I* | Kurzbeschreibung |
---|---|---|---|---|
readTimeout | INTEGER | Zeit in ms, maximale Wartezeit eines Read-Aufrufs (0 = unendlich) (standard = CX_TCP_CONNECTION_READ_TIMEOUT |
* I = Indizierbares Datenfeld
Modul | Kurzbeschreibung |
---|---|