Entwickler-Ecke

Internet / Netzwerk - TCPClient/Server & Threads


elimhren - Do 28.07.05 00:32
Titel: TCPClient/Server & Threads
Hallo!
Ich benötige zwecks Kommunikation mehrerer Programme in einem Netzwerk einen TCP/IP Server, der eingehende Befehle sortiert und jeweils an gewisse Programme weiterschickt.

Meine Vorstellung geht in die Richtung: Wenn eins dieser Programm startet meldet es sich bei diesem TCP Server per Socket Verbindung an, dieser Server verwaltet sämtliche angemeldete IP's in einer Liste und kann an diese bei Bedarf etwas zurückschicken.

Nun meine Frage, ich hab mich nun intensiv mit dem NetChat Beispiel von Delphi beschäftigt, wo soweit auch alles klar ist, dennoch:

Benötige ich für diese Anwendung wirklich Threads?
Was passiert wenn ich meine Clientsocket.Receiveln bei OnAccept direkt in eine TListView eintragen lasse und nicht über Synchronisierung
Wo sind dabei die Gefahren, nur kurze Verzögerung oder Datenverlust?

Danke für eure Hilfe
Johannes


Harry M. - Do 28.07.05 01:12

Suche mal nach Client- und Serversocket, sehr beliebte und einfache Komponeten. Das sind 2 Delphi Komponeten die jedoch nicht vorinstalliert sind. Wie Du sie reinbekommst Komponete -> Package installieren und die Datei dclsockets70.bpl hinzufügen. Fertig. Und suche im Forum da findest Du eine Menge. Da ist nix mit Thread und sowas. Das was im D7 Demo-Ding-Bums bei ist basiert auf dem TCPCliet/Server. Oder irre ich mich jetzt??.


Delete - Do 28.07.05 02:18

Er hat Delphi 6 Professional, da sollten sie schon mit installiert sein. ;)

Aber was hat die Antwort mit der Frage zu tun?
Zitat:

Benötige ich für diese Anwendung wirklich Threads?
Was passiert wenn ich meine Clientsocket.Receiveln bei OnAccept direkt in eine TListView eintragen lasse und nicht über Synchronisierung
Wo sind dabei die Gefahren, nur kurze Verzögerung oder Datenverlust?


Harry M. - Do 28.07.05 02:45

Bei mir geht nix verloren und Threads brauche ich da auch nicht wollte ich damit verkünden.


elimhren - Do 28.07.05 11:26

Das Komponentenpackage hab ich nun hinzugefügt und mich damit gespielt, funktionieren im Einfachen genauso wie die TCP/IP Komponenten von Delphi.

Für mich stellt sich nur die Frage, da dies keine Peer-To-Peer Socketverbindung werden soll, sondern eben ein Server der bis zu 300 Anfragen / Connections pro Minute verarbeiten muss.

Daher: Ja, es gibt diesen stThreadBlockingModus, der für jede einkommende Verbindung einen eigenen Thread öffnet - nur ehrlich gesagt, ich verstehe nicht wie ich nun mit GetThread/OnThreadStart usw. arbeiten soll (Threads allgemein sind mir bekannt) Google & Foren schweigen darüber, lediglich unsere russischen Kollegen beschäftigen sich damit, blöd dass ich kein russisch kann :roll:

Daher nochmal die prinzipielle Frage ob bei meinem Projekt ein Server ohne Thread-Handling ausreicht und wo die Engpässe sind - Verzögerung oder Datenverlust?

Danke euch!
Johannes