Moin!
Pseudo hat folgendes geschrieben : |
Wie kann ich den Server multithreaden |
Kurz gesagt: gar nicht.
Was du aber machen kannst: den kompletten Server in einen eigenen Thread auslagern, diesen nur für die Kommunikation verwenden (dafür reicht die Performance alle mal aus, die eigentliche Arbeit macht eh die WSA) und die Daten an Client-Worker-Threads durchzureichen.
Der Schlüssel für einen eigenen Server-Thread (klar, am Besten mit dem
TNBFPAServer) ist der wirklich geradezu geniale
TMessageThread von
delfiphan.
Pseudo hat folgendes geschrieben : |
Ich hab dazu bis jetzt nicht viel im Internet gefunden... |
Das ist auch nicht verwunderlich.
Theoretisch kann der TServerSocket auch Multithreading, aber ich habe es aufgegeben herausfinden zu wollen, wie man das machen muss. Ich blicke nicht durch, was die Entwickler sich damals dabei wohl gedacht haben...
Gibt es jemanden, der das jemals geschafft hat? Wenn ja, bitte unbedigt bei mir (oder hier) melden!
Pseudo hat folgendes geschrieben : |
Und die Indys kann ich nicht leiden (unter anderem auch weil man nur eine Zeile übertragen kann?!?). |
Zunächst mal: selbstverständlich kann der Socket-Wrapper (IOHandler oder so heißt das dort) der Indies auch mehr als "eine Zeile" senden (du kannst ja auch mit Streams arbeiten), aber du scheinst da was mit den Methoden zur Unterstützung von zeilenorientierten Protokollen nicht verstanden zu haben.
Leider muss ich aber sagen: wenn du einen "echten" Multithreaded-Server in Delphi haben willst, schätze ich ist der TidTCPServer vermutlich alternativlos.
cu
Narses
There are 10 types of people - those who understand binary and those who don´t.