Neudefinition der TCP/IP-Client...


Wie schaffen wir einen TCP/IP-Server/Client in Delphi?
Dieser Artikel ist eine neu Version von meinem vorherigen Artikel
(der https://www.howtodothings.com/showarticle.asp?article=220 machen einer Anwendung ein TCP/IP-Client (mit Beispiel-Code)...). Kann sein, dass dies in letzter Zeit ist aber hoffen, dass es hilfreich ist. In diesem Artikel habe ich versucht zu erklären /, im Allgemeinen, wie TCP / IP-Clients und Servern mit Delphi erstellt besprechen.
Was habe versucht ich, in diesem Beispielcode zeigen?
Ich versuchte, eine einfache TCP / IP-Client-Anwendung zu demonstrieren, die mit einem bestimmten Port auf einem TCP / IP-Server verbunden und tauscht Daten. Ich habe nicht gesagt nichts über den Server, außer dass meine Bewerbung im Gespräch mit einem TCP / IP-Server in Java geschrieben. Aber alles, was Sie benötigen, um einen Server zu sprechen ist die Adresse/Host und Port/Service-Informationen. Und um auf den Server zu sprechen, müssen Sie sicherstellen, dass der Server ausgeführt wird. Das ist es. Du musst nicht wie diesen Server implementiert wird, wenn Sie den Server und den Client entwickeln möchten selbst kümmern. Lassen Sie in diesem Artikel mich Ihnen eine kurze Übersicht über ein TCP / IP-Server in Delphi schreiben.
Dies ist, was ich getan habe, in diesem Quellcode:
1.die etabliert eine Verbindung zum Server beim Start der Anwendung.
2. verwendet ein SendXml Verfahren, um Daten an den Server senden.
3. gebrauchte OnClientSocketRead Ereignis wieder die Daten vom Server gelesen.
4. verwendete OnClientSocketError-Ereignis den Fehler abzufangen
Sie sehen ein boolesches Flag fWaiting in der SendXml und die OnClientSocketRead Verfahren genannt. Ich werde in meiner Anwendung einige Daten an den Server senden und warten, bis der Server wieder reagieren. Ich warte im Wesentlichen für das OnClientSocketRead-Ereignis Hoffnung geschehen, die der Server ab sofort reagiert. Das ist der Grund, warum ich die boolesches Flag-fWaiting verwendet.
Wo beginnen, haben eine Vorstellung davon, welche TCP / IP-Client und TCP / IP-Server?
Für Menschen, die versuchen möchten, empfehle ich ihnen einen Blick auf das Demoprojekt namens Chat.dpr in beiden Delphi 5 und 6 haben. Im folgenden werden die Links zum Projekt:
Delphi 5:
C:\ Programm Files\Borland\Delphi5\Demos\Internet\Chat\chat.dpr

Delphi 6:
C:\ Programm Files\Borland\Delphi6\Demos\Internet\Chat\chat.dpr

Was ist im Grunde ein TCP / IP-Client?
Es ist eine Anwendung, die auf einen bestimmten Port auf einem TCP / IP-Server und tauscht Daten entweder als Stream oder Text verbindet.
Was müssen Sie erstellen eine mit Delphi?
Alles was Sie brauchen ist ein TClientSocket Komponente auf der Internet-Palette legen Sie folgende Eigenschaften:
Adresse: Sie können die IP-Adresse des TCP / IP-Servers eingeben, denen mit diesem Client verbindet.
Host: Anstelle der Adresse können Sie in der Host-Eigenschaft ein Aliasname für die IP-Adresse hier eingeben. Es ist offensichtlich, die Adresse oder der Host-Eigenschaft festzulegen. Aber was passiert, wenn Sie beide festgelegt? Host-Eigenschaft hat Vorrang vor der Address-Eigenschaft.
Festlegen des Eigenschaft besser mit der Address-Eigenschaft seit verglichen würde auch, wenn Sie den TCP / IP-Server auf eine andere Maschine oder ändern die IP-Adresse auf etwas anderes, so lange, wie Sie den Alias Hosts name identisch, Sie sind in Ordnung; Sie brauchen nicht zu befürchten, auf dem TCP / IP-Client zu ändern. (Obwohl es eine leichte Aufwand für den Hostnamen in die entsprechende IP-Adresse aufgelöst ist, ist es lohnt sich, es)
Port: Es ist eine gültige ganzzahlige Portnummer, wo der TCP / IP-Server überwacht. (und reagiert.) Es ist immer eine feste Anzahl vom Server zugewiesen. An die Portnummer der Client schließen Sie an und sendet und empfängt Daten.
Service: Wie Host und Address-Eigenschaft auf eine Weise miteinander verknüpft sind, sind auch Port und Service Eigenschaften verbunden. Service ist im allgemeinen etwas der TCP / IP-Server kann für ihre Kunden bereitstellen wie http, ftp. Diese standard-Services, die eine bestimmte Portnummer auf dem Server zugewiesen wurden. (z.B. http - Port 80). Wie das funktioniert? Auf dem Server ist eine Service-Datei, die Dienstleistungen mit den jeweiligen Anschlüssen zugeordnet. Also so, haben Sie Ihre eigene Service-Beschreibung, die auf dem Server eine bestimmte Portnummer zugeordnet. In diesem Fall kann der Client über die Service-Eigenschaft mit dem Dienst verbinden und interagieren.

ClientType: Diese Eigenschaft bestimmt, ob die Interaktion zwischen Server und Client synchron oder asynchron erfolgt.
CtNonBlocking - Standard. Dies bedeutet, dass die Interaktion zwischen Server und Client asynchron erfolgt. d. h. der Client kann Daten an den Server senden und warten die OnRead Daten auftreten, wenn die Daten vom Server gesendet werden.
CtBlocking - Hiermit wird für die Interaktion zwischen dem Server und dem Client synchron auftreten.
Wann den Clientcode threadsicher machen?
Wenn von einer Clientanwendung zu einem Zeitpunktmehr als eine Anforderung an den Server gesendet wird, sollte der Clientcode threadsicher sein. Andernfalls kann die Anforderung / Antwort-kollidieren.
Wann den Servercode threadsicher machen?
Wenn mehr als eine Anforderung an den Server gesendet wird, sollte entweder aus einer Clientanwendung oder anderen Client-Anwendungen gleichzeitig, dann den Servercode threadsicher sein. Dies gilt für alle TCP / IP-Server auch in anderen Sprachen geschrieben.
Hoffe, dass ich mich auf den Thread-sicheren Teil klar mache.
Welches ist der beste Ort, um die TClientSocket-Komponente in einer Anwendung zu setzen?
Sie können die Komponente in einem Formular oder DataModule setzen. Wenn Sie nur ein einzelnes Formular in der Clientanwendung, die zu einem Server spricht, dann ist es okay, dass TClientSocket-Komponente in dieser Form zu setzen. Aber haben Sie viele Formen in der Clientanwendung, dann ist es besser, wird die Komponente in einem DataModule und verwenden dieses DataModule, wo benötigt. Ich habe ein DataModule in meinem Client-Anwendung, da ich viele Formen hatte, jedes Gespräch mit dem Server zu einem anderen Zeitpunkt.
Wie herstellen Sie eine Verbindung zum Server?
Alle diese oben genannten Eigenschaften festlegen Sie und dann entweder die Active-Eigenschaft auf true oder die Open-Methode aufrufen. Sobald Sie eine Verbindung herstellen, können Sie den Daten mithilfe von entweder die Methode SendText oder SendStream senden. Und das OnClientSocketRead-Ereignis können Sie die Daten vom Server gelesen.
Was ist ein TCP / IP-Server?
Es ist eine Anwendung, die auf einem bestimmten Port lauscht und antwortet auf Kunden. Es könnte sein, dass jeder standard-Servern wie http, ftp oder ein benutzerdefinierter Server für Ihre spezifische Anwendung gemacht.
Was müssen Sie mit Delphi verursachen?
Wie bei den Client benötigen Sie eine TServerSocket-Komponente mit den folgenden Eigenschaften:
Port: Sie können jede gültige Integer-Wert zuweisen. Der Client kann an diesen Port zu verbinden und Interaktion mit dem Server.
Service: Wie ich bereits sagte, haben Sie einen Dienstnamen eine Portnummer zugeordnet.
Wann immer wir Server sagen, sollte es mehr als einen Client eindeutig dienen können; nur dann ist es sinnvoll, einen Server zu haben. Nicht wahr? Jetzt die nächste Frage ist, wie diese Clients an den Server sprechen: mehr als einen Client zu einem Zeitpunkt oder einen Client zu einem Zeitpunkt. Es führt zu der folgenden Einstellung der Eigenschaft, die bestimmt, ob die Clients mit dem Server synchron oder asynchron zu sprechen.
Wie behandeln wir mehrere Client-Anfragen zu einem Zeitpunkt?
Die Antwort ist, um einen neuen Thread für jede Clientanforderung herauszulocken. Dies kann erreicht werden, indem die ServerType-Eigenschaft auf StThreadBlocking. Bedeutet Laichen und Löschen eines Threads für jede Clientanforderung ein Overhead? Ja. Offensichtlich. Aber wenn unser Anwendungsdesign erforderlich ist, es dann gibt keinen anderen Weg; Du musst diesen Aufwand erforderlich. Können wir diesen Aufwand für das Erstellen und zerstören von Threads von reduzieren? Ja. Wir können. Wie? Zwischenspeichern von diesen Threads. Rechts.
Die ThreadCacheSize-Eigenschaft dient diesem Zweck. Der Standardwert ist 10, aber dieser Wert hängt der Bedarf der Client-Anwendung. Sie sollten sehr vorsichtig sein, wenn dieser Wert sein. Wenn Sie es auf einen maximalen Wert festlegen, werden Sie am Ende in Speicherprobleme. Wenn Sie es auf einen sehr niedrigen Wert festlegen, wird der Client eine Wartezeit für jede Anforderung haben. So haben Sie einen besten Wert basierend auf der Clientstatistiken zu bestimmen.
Wenn die Client-Anfragen einzeln nacheinander kommen, können Sie die ServerType-Eigenschaft auf StNonBlocking festlegen.
Wie lesen wir Daten vom Client?
Wie bei der ClientSocket, haben wir OnClientRead Ereignis zum Lesen von Daten vom Client unter anderem.
Das ist alles. Hoffe, dass Sie selbst schreiben können sowohl Client als auch Server mit diesen Informationen.
Wie immer, bitte fühlen Sie sich frei, Ihre Ansichten, Anregungen und Erfahrungen mit unserer Delphi-Community zu teilen.









Neudefinition der TCP/IP-Client...


Neudefinition der TCP/IP-Client... : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Wie schaffen wir einen TCP/IP-Server/Client in Delphi?
Dieser Artikel ist eine neu Version von meinem vorherigen Artikel
(der https://www.howtodothings.com/showarticle.asp?article=220 machen einer Anwendung ein TCP/IP-Client (mit Beispiel-Code)...). Kann sein, dass dies in letzter Zeit ist aber hoffen, dass es hilfreich ist. In diesem Artikel habe ich versucht zu erklären /, im Allgemeinen, wie TCP / IP-Clients und Servern mit Delphi erstellt besprechen.
Was habe versucht ich, in diesem Beispielcode zeigen?
Ich versuchte, eine einfache TCP / IP-Client-Anwendung zu demonstrieren, die mit einem bestimmten Port auf einem TCP / IP-Server verbunden und tauscht Daten. Ich habe nicht gesagt nichts über den Server, außer dass meine Bewerbung im Gespräch mit einem TCP / IP-Server in Java geschrieben. Aber alles, was Sie benötigen, um einen Server zu sprechen ist die Adresse/Host und Port/Service-Informationen. Und um auf den Server zu sprechen, müssen Sie sicherstellen, dass der Server ausgeführt wird. Das ist es. Du musst nicht wie diesen Server implementiert wird, wenn Sie den Server und den Client entwickeln möchten selbst kümmern. Lassen Sie in diesem Artikel mich Ihnen eine kurze Übersicht über ein TCP / IP-Server in Delphi schreiben.
Dies ist, was ich getan habe, in diesem Quellcode:
1.die etabliert eine Verbindung zum Server beim Start der Anwendung.
2. verwendet ein SendXml Verfahren, um Daten an den Server senden.
3. gebrauchte OnClientSocketRead Ereignis wieder die Daten vom Server gelesen.
4. verwendete OnClientSocketError-Ereignis den Fehler abzufangen
Sie sehen ein boolesches Flag fWaiting in der SendXml und die OnClientSocketRead Verfahren genannt. Ich werde in meiner Anwendung einige Daten an den Server senden und warten, bis der Server wieder reagieren. Ich warte im Wesentlichen für das OnClientSocketRead-Ereignis Hoffnung geschehen, die der Server ab sofort reagiert. Das ist der Grund, warum ich die boolesches Flag-fWaiting verwendet.
Wo beginnen, haben eine Vorstellung davon, welche TCP / IP-Client und TCP / IP-Server?
Für Menschen, die versuchen möchten, empfehle ich ihnen einen Blick auf das Demoprojekt namens Chat.dpr in beiden Delphi 5 und 6 haben. Im folgenden werden die Links zum Projekt:
Delphi 5:
C:\ Programm Files\Borland\Delphi5\Demos\Internet\Chat\chat.dpr

Delphi 6:
C:\ Programm Files\Borland\Delphi6\Demos\Internet\Chat\chat.dpr

Was ist im Grunde ein TCP / IP-Client?
Es ist eine Anwendung, die auf einen bestimmten Port auf einem TCP / IP-Server und tauscht Daten entweder als Stream oder Text verbindet.
Was müssen Sie erstellen eine mit Delphi?
Alles was Sie brauchen ist ein TClientSocket Komponente auf der Internet-Palette legen Sie folgende Eigenschaften:
Adresse: Sie können die IP-Adresse des TCP / IP-Servers eingeben, denen mit diesem Client verbindet.
Host: Anstelle der Adresse können Sie in der Host-Eigenschaft ein Aliasname für die IP-Adresse hier eingeben. Es ist offensichtlich, die Adresse oder der Host-Eigenschaft festzulegen. Aber was passiert, wenn Sie beide festgelegt? Host-Eigenschaft hat Vorrang vor der Address-Eigenschaft.
Festlegen des Eigenschaft besser mit der Address-Eigenschaft seit verglichen würde auch, wenn Sie den TCP / IP-Server auf eine andere Maschine oder ändern die IP-Adresse auf etwas anderes, so lange, wie Sie den Alias Hosts name identisch, Sie sind in Ordnung; Sie brauchen nicht zu befürchten, auf dem TCP / IP-Client zu ändern. (Obwohl es eine leichte Aufwand für den Hostnamen in die entsprechende IP-Adresse aufgelöst ist, ist es lohnt sich, es)
Port: Es ist eine gültige ganzzahlige Portnummer, wo der TCP / IP-Server überwacht. (und reagiert.) Es ist immer eine feste Anzahl vom Server zugewiesen. An die Portnummer der Client schließen Sie an und sendet und empfängt Daten.
Service: Wie Host und Address-Eigenschaft auf eine Weise miteinander verknüpft sind, sind auch Port und Service Eigenschaften verbunden. Service ist im allgemeinen etwas der TCP / IP-Server kann für ihre Kunden bereitstellen wie http, ftp. Diese standard-Services, die eine bestimmte Portnummer auf dem Server zugewiesen wurden. (z.B. http - Port 80). Wie das funktioniert? Auf dem Server ist eine Service-Datei, die Dienstleistungen mit den jeweiligen Anschlüssen zugeordnet. Also so, haben Sie Ihre eigene Service-Beschreibung, die auf dem Server eine bestimmte Portnummer zugeordnet. In diesem Fall kann der Client über die Service-Eigenschaft mit dem Dienst verbinden und interagieren.

ClientType: Diese Eigenschaft bestimmt, ob die Interaktion zwischen Server und Client synchron oder asynchron erfolgt.
CtNonBlocking - Standard. Dies bedeutet, dass die Interaktion zwischen Server und Client asynchron erfolgt. d. h. der Client kann Daten an den Server senden und warten die OnRead Daten auftreten, wenn die Daten vom Server gesendet werden.
CtBlocking - Hiermit wird für die Interaktion zwischen dem Server und dem Client synchron auftreten.
Wann den Clientcode threadsicher machen?
Wenn von einer Clientanwendung zu einem Zeitpunktmehr als eine Anforderung an den Server gesendet wird, sollte der Clientcode threadsicher sein. Andernfalls kann die Anforderung / Antwort-kollidieren.
Wann den Servercode threadsicher machen?
Wenn mehr als eine Anforderung an den Server gesendet wird, sollte entweder aus einer Clientanwendung oder anderen Client-Anwendungen gleichzeitig, dann den Servercode threadsicher sein. Dies gilt für alle TCP / IP-Server auch in anderen Sprachen geschrieben.
Hoffe, dass ich mich auf den Thread-sicheren Teil klar mache.
Welches ist der beste Ort, um die TClientSocket-Komponente in einer Anwendung zu setzen?
Sie können die Komponente in einem Formular oder DataModule setzen. Wenn Sie nur ein einzelnes Formular in der Clientanwendung, die zu einem Server spricht, dann ist es okay, dass TClientSocket-Komponente in dieser Form zu setzen. Aber haben Sie viele Formen in der Clientanwendung, dann ist es besser, wird die Komponente in einem DataModule und verwenden dieses DataModule, wo benötigt. Ich habe ein DataModule in meinem Client-Anwendung, da ich viele Formen hatte, jedes Gespräch mit dem Server zu einem anderen Zeitpunkt.
Wie herstellen Sie eine Verbindung zum Server?
Alle diese oben genannten Eigenschaften festlegen Sie und dann entweder die Active-Eigenschaft auf true oder die Open-Methode aufrufen. Sobald Sie eine Verbindung herstellen, können Sie den Daten mithilfe von entweder die Methode SendText oder SendStream senden. Und das OnClientSocketRead-Ereignis können Sie die Daten vom Server gelesen.
Was ist ein TCP / IP-Server?
Es ist eine Anwendung, die auf einem bestimmten Port lauscht und antwortet auf Kunden. Es könnte sein, dass jeder standard-Servern wie http, ftp oder ein benutzerdefinierter Server für Ihre spezifische Anwendung gemacht.
Was müssen Sie mit Delphi verursachen?
Wie bei den Client benötigen Sie eine TServerSocket-Komponente mit den folgenden Eigenschaften:
Port: Sie können jede gültige Integer-Wert zuweisen. Der Client kann an diesen Port zu verbinden und Interaktion mit dem Server.
Service: Wie ich bereits sagte, haben Sie einen Dienstnamen eine Portnummer zugeordnet.
Wann immer wir Server sagen, sollte es mehr als einen Client eindeutig dienen können; nur dann ist es sinnvoll, einen Server zu haben. Nicht wahr? Jetzt die nächste Frage ist, wie diese Clients an den Server sprechen: mehr als einen Client zu einem Zeitpunkt oder einen Client zu einem Zeitpunkt. Es führt zu der folgenden Einstellung der Eigenschaft, die bestimmt, ob die Clients mit dem Server synchron oder asynchron zu sprechen.
Wie behandeln wir mehrere Client-Anfragen zu einem Zeitpunkt?
Die Antwort ist, um einen neuen Thread für jede Clientanforderung herauszulocken. Dies kann erreicht werden, indem die ServerType-Eigenschaft auf StThreadBlocking. Bedeutet Laichen und Löschen eines Threads für jede Clientanforderung ein Overhead? Ja. Offensichtlich. Aber wenn unser Anwendungsdesign erforderlich ist, es dann gibt keinen anderen Weg; Du musst diesen Aufwand erforderlich. Können wir diesen Aufwand für das Erstellen und zerstören von Threads von reduzieren? Ja. Wir können. Wie? Zwischenspeichern von diesen Threads. Rechts.
Die ThreadCacheSize-Eigenschaft dient diesem Zweck. Der Standardwert ist 10, aber dieser Wert hängt der Bedarf der Client-Anwendung. Sie sollten sehr vorsichtig sein, wenn dieser Wert sein. Wenn Sie es auf einen maximalen Wert festlegen, werden Sie am Ende in Speicherprobleme. Wenn Sie es auf einen sehr niedrigen Wert festlegen, wird der Client eine Wartezeit für jede Anforderung haben. So haben Sie einen besten Wert basierend auf der Clientstatistiken zu bestimmen.
Wenn die Client-Anfragen einzeln nacheinander kommen, können Sie die ServerType-Eigenschaft auf StNonBlocking festlegen.
Wie lesen wir Daten vom Client?
Wie bei der ClientSocket, haben wir OnClientRead Ereignis zum Lesen von Daten vom Client unter anderem.
Das ist alles. Hoffe, dass Sie selbst schreiben können sowohl Client als auch Server mit diesen Informationen.
Wie immer, bitte fühlen Sie sich frei, Ihre Ansichten, Anregungen und Erfahrungen mit unserer Delphi-Community zu teilen.


Neudefinition der TCP/IP-Client...

Neudefinition der TCP/IP-Client... : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Neudefinition der TCP/IP-Client...
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung