Asynchron Sockets
-
Hi WinAPI FANs
Ich würde gerne wissen ob und wie es möglich ist, asynchrone Sockets in einer Windows32 Anwendung (Visual C++) zu benutzen. Bei einer MFC-Anwendung kann ja die Klasse CAsyncSocket verwendet werden, aber wie geht das ohne MFC?
Die normalen(synchronen) "blocking sockets" habe ich bereits in einer Konsolenanwendung benutzt, aber ich glaube in meiner kleinen Anwendung brauche ich asynchrone Sockets so wie es bei einer MFC-Anwendung möglich ist (OnAccept, OnSend etc.)Für Links zu einem HowTo oder so bin ich sehr Dankbar.
Wenn das gar nicht geht wie ichs mir vorstelle würde ich gerne von euch wissen, wie ihr Anwendungen schreibt, die viele Netzwerkverbindungen etc. aufbauen.Danke,
MFG Scorp1on
-
Benutzte die Suchfunktion oder gleich WSAAsyncSelect
cu para
-
hmm, das geht wie folgt:
WSAAsynchSelect() auf gültigen socket() anwenden
mit SetWindowLong() eigene callback-routine einhängen um zb FD_READ abzufangenfertig is ... ( im groben natürlich
)
rocknix ///
-
So ich habe mich nun einwenig schlau gemacht, aber eine große Frage habe ich immernoch.
int WSAAsyncSelect(
SOCKET s,
HWND hWnd, <--
unsigned int wMsg,
long lEvent
);´Meine Windows32 Andwendung soll aber gar kein Fenster haben...brauche ich nicht.
Wie kann ich das auch ohne ein Dialogfenster machen? Ich habe gehört man kann mit WSAEventSelect genau das erreichen...Kann da einer weiterhelfen? Ich habe irgendwie noch nicht so den schimmer wie das funktioniert und bei MSDN steht zwar viel erklärt, aber jetzt daraus etwas zum laufen zu bringen bin ich nicht in der Lage
-
naja,
mit WSAEventSelect() wählst du aus, welche message aktiviert werden soll und mit WSAEnumNetworkEvents() kannst du diese dann abfragen. IMO sollte WSAEnumNetworkEvents() in einem thread laufen, der dann ab und an mal nachschaut (so ne art polling), was so los war. ziemlich umständlich ...
eine andere einfache möglichkeit ist -> hänge in deine anwendung ein dummy-window, das nicht sichtbar ist "ShowWindow(hwnd,SW_HIDE)" und nutze dieses für den WSAAsynchSelect() aufruf ... einfach, effektiv und erlaubt zudem noch subclassing falls man den socketkram in eine klasse packen möchte!
hope it helps ... rocknix ///