Socket aus Thread starten (Dringend!!!)
-
Hallo zusammen,
ich habe folgendes Problem: (WinXP Prof, MS Visual C++ 6.0)
ich habe in meiner Anwendung einen Thread
Aufruf:
unsigned long ulThread(0); unsigned uiThreadAddr(0); ulThread =_beginthreadex(NULL,0,Ethernet,this,0,&uiThreadAddr);Thread:
unsigned __stdcall Ethernet(void* pThis) { CMySocket Sock; Sock.Create(); ... return 0; }Da bekomme ich immer eine Fehlermeldung Access Violation 0xC0000005
Wenn ich außerhalb des Threads eine neue Funktion erstelle z.B.:
void xxx::Ethernet() { CMySocket Sock; Sock.Create(); ... return 0; }und diese aus dem Thread aufrufe, ebenfalls Fehlermeldung.
Nur wenn ich ohne den Thread arbeite funktionierts!!!
Kann man aus einem Thread raus keinen Socket starten???
Vielen Dank für Eure Hilfe
MfG Dippi
-
Hallo,
also die mir bekannten Threads arbeiten nur mit void* als Rückgabetyp, aber das kann auch bei anderen Threads anders sein. Sicher bin ich mir nur das deine untere Funktion gar nichts zurückgeben dürfte.
Funktioniert denn dein Thread ohne den Socket?MfG
-
Hallo,
ich bin mir nicht sicher ob ich Dir da weiterhelfen kann, aber in
meiner Software würde ich das in etwa nachfolgend schreiben:DWORD ulThread; typedef unsigned (__stdcall *PTHREAD_START) (void*); ulThread = _beginthreadex( NULL, NULL, (PTHREAD_START)Ethernet, (LPVOID)& this, 0, NULL ); if (ulThread== -1 || ulThread== 0) { ...error handling... } else { CloseHandle( (HANDLE)ulThread ); }Und wie "Jaschi" geschrieben hat sollte "Ethernet" void sein und Du
übergibst dafür ja den "this" Parameter.
Vielleicht kommst Du mit dem Vorstehenden etwas weiter
.MFG