TCP-client Asynchrone socket-callback
Bitte beachten Sie, die Frage ist, unter Verwendung einer asynchronen callback-Modus nur auf sockets!
Ich bauen will einen TCP-client, Benachrichtigen Sie mich, wenn ein Paket empfangen wird, und, wenn ich das socket geschlossen wird,denn der bietet, das NETZ bietet mit beginRecv,endRecv nicht informieren, ob die Verbindung noch verfügbar ist.
Meine Frage:
Gibt es nicht eine Möglichkeit zum erstellen einer TCP-client-ähnlich wie Sie mit WinAPI?
Ich meine Berufung WSAAsyncSelect mit einer Nachricht,wenn die Nachricht empfangen wird, ruft es die Funktion, die Sie genannt haben in WSAAsyncSelect und dann können Sie sehen, ob die Verbindung geschlossen ist oder es gibt ein neues Paket durch die WParams FD_CLOSE FD_READ FD_WRITE.
Wenn es nicht ist.Ich kann nicht kontrollieren meine Verbindung und meine eingehende Pakete gleichzeitig? Ich will nicht rufen Sie BeginRecv EndRecv die ganze Zeit. -.-
Vielen Dank im Voraus!
- Muss es sein, async, oder kann man ein Gewinde-version, die tut, was Sie wollen?
- Ist das ein client oder server? Hören Sie zu oder verbinden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie an einem Zustand-Objekt enthält einen Verweis auf Ihre sockel, haben Sie Zugriff auf die Steckdose selbst.
Ihre Frage ist nicht wirklich klar. Durch den Ton Ihrer Frage, es scheint, wie Sie nicht wollen, zu tun, ohne zusätzliche Arbeit. Sie können nicht tun, async, ohne etwas zusätzliche Arbeit.
Der beste Ansatz ist die Verwendung der Asynchronen API von Microsoft, mit BeginReceive/EndReceive. Diese rufen Ihre Rückrufe, wenn der socket geschlossen. Allerdings können Sie nicht problemlos verwenden Sie die IO-Stream-Unterstützung in .NET dadurch, so gibt es einige zusätzliche Arbeit beteiligt.
Wenn du mehr Kontrolle haben möchten, haben Sie mehr Arbeit zu tun. Das ist alles dort ist zu ihm.
Könnte man auch schreiben, ein einfaches Gewinde-version zur überwachung der Steckdose und geben Sie die Ereignisse an und rufen Sie die Rückrufe.
Server-Typ-code
Einfache Socket-code