2009-07-15 3 views
0

Ich habe hier eine Menge Fragen über WSAAsyncSelect und NET gestellt. Vor ein paar Monaten habe ich sogar 500 Rep auf ein Bounty ausgegeben und selbst beantwortet (ich habe einen Wrapper erstellt). Am Ende habe ich mich an den Winsock im Framework gewöhnt .Wie wird WSAAsyncSelect ordnungsgemäß verwendet?

Heute frage ich über nicht verwaltete Sprachen, der schlechte Punkt ist, dass ich die Framework-Weg der Dinge mit Sockets zu vermissen.Ich schreibe mein Projekt in Delphi, aber ich verstehe C-ähnliche Sprachen, so wäre es kein Problem und ich frage nicht nach irgendeinem Code. Ich liebe natürliche Dinge, also bitte schlagen Sie keine Komponenten, reinen Code nur vor. :)

Die Leute sagen, es ist gut, ein anderes verstecktes Formular zu erstellen und die Nachrichtenschleife dort zu setzen, um AsyncSelect richtig zu verwenden.

Nun, meine Frage ist einfach: Ich legte die ganzen Winsock-Funktionen, die ich geschrieben habe, um mein Leben leichter zu machen in dieser versteckten Form und auch ich die WSaAsyncSelect mit seiner Handle, die Nachrichtenschleife ist auch da, aber ich habe geschrieben Unterklassen (viele Klassen, riesiger Code), die Elternklasse ist diese versteckte Form.

Ist WSAAsyncSelect Thread-sicher? Wird das die Dinge verlangsamen (was habe ich mit Klassen gemacht)?

Muss ich Threads außerhalb der Nachrichtenschleife erstellen?

Alle anderen Tipps zur korrekten Verwendung von AsyncSelect werden sehr geschätzt.

Bearbeiten: Um Missverständnisse zu vermeiden, frage ich direkt über AsyncSelect(). Das Projekt, an dem ich arbeite, benötigt 2 Server und 1 Client, was meiner Meinung nach gut mit diesem Aufruf behandelt werden könnte.

Antwort

1

Die Leute sagen, es ist gut, eine andere versteckte Form zu erstellen und die Nachrichtenschleife dort richtig eingestellt AsyncSelect verwenden.

Codieren Sie direkt zu WinSock oder verwenden Sie die Komponenten TClientSocket und TServerSocket der VCL? Wenn Letzteres, dann behandeln sie bereits WSAAsyncSelect() intern für Sie (ja, sie verwenden ihr eigenes verstecktes Fenster).

Ist WSAAsyncSelect Thread-sicher?

Ja.

Wird dies Dinge verlangsamen (was habe ich getan mit Klassen)?

Sie haben nicht wirklich erklärt, was die Klassen tun.

Muss ich Threads außerhalb die Nachrichtenschleife erstellen?

Nein, aber Buchsen können bei Bedarf mit mehreren Threads verwendet werden. Die Socket-Nachrichten werden jedoch nur von dem Thread verarbeitet, der das Fenster besitzt, das an WSAAsyncSelect() übergeben wurde.

+0

Vielen Dank für Ihre Antwort.Eine Sache dauert. Ich benutze reine Winsock mit meinen Sockets von Hand erstellt, keine Komponenten.Könnten Sie mir zeigen, wie "Sockets von mehreren Threads verwendet werden können, wenn gewünscht". –