auf release version geht socketverbindung nicht (WSAEWOULDBLOCK)
-
also auf debug läuft alles gut. stelle ich auf release um, kann ich nicht mal ne verbindung (CAsyncSocket) aufbauen. möchte zum server verbinden und Connect() liefert 0 (GetLastError() = WSAEWOULDBLOCK).
jetzt habe ich allerhand im netz über non-blocking sockets gefunden, aber konnte das problem nicht lösen.
macht der compiler irgendwas in der debug version mit meinem socket was die release nicht macht ?
mit der debug version kann ich sofort zum server connecten
-
In der Debug-Version läuft dein Programm ein bisschen langsamer. :p
-
ich hatte es zum testen Connect() in eine hile schleife gelegt die solgane GetLastError() WSAEWOULDBLOCK liefert wiederholt wird.
da konnte ich ihn auch 10 stunden stehen lassen
hat also auch nicht geklapt
-
also der fehler mit WSAEWOULDBLOCK ist irgendwie weg, ich weis auch nicht warum. aber:
ich bekomme jetzt keine verbindung zwischen den programmen, weil einfachste sachen wie z.B.
cMsg = pBuf[iRcvd];
nicht mehr !! (cMsg ist vom typ CString, pBuf ist der Buffer, typ char*, iRcvd die länge die ich empfangen habe)
alles geht in der debug version wie gesagt.
jetzt habe ich eben den client kompiliert (release) und es hat funktioniert. dann habe ich ihn geschlossen und das programm noch mal gestartet, ohne neu zu kompilieren. danach ging es nicht mehr !!!!!!
wie kommt sowas zu stande. es kann doch nicht sein das auf release solche klöpse gibt !? ich kann mir das ja nicht mal logisch erklären.
bin am verzweifeln damit
-
Wird der Socket auch beim Beenden des Prg geschlossen? Ist der Buffer pBuf[iRcvd]; auch mit einer "\0" terminiert(abgeschlossen)? Könnten die Fehler sein an sonsten mußt Du die Release Debugen oder mit Messageboxen Dir ausgeben was wo Passiert.
Release debugen siehe hier:
http://www.mpdvc.de/html.htm#Q90Gruß
-
alles terminiert usw. also es klappt jetzt auf einmal.
jetzt kommt ein neuer / alter fehler -.-
ich hatte hier http://www.c-plusplus.net/forum/viewtopic-var-t-is-133910.html schon über dieses problem geschrieben.
bevor ich das problem aus diesem thread lösen konnte hatte das problem (siehe link) mit der MySQL verbindung. das konnte ich lösen. dann das dieses problem (netzwerkverbindung). jetzt klappt dieses problem, dann geht die MySQL verbindung nicht mehr !! aber auch nur bei einem programm; ein anderes programm (benutzt den selben code) kann sich verbinden.
alles noch mit release.
wie können größere firmen riesige softwareprojekte umsetzen ??
-
ich habe jetzt rausgefunden das alles an einer einstellung liegt. in der *.vcproj gibt es in der release konfiguration den eintrag "DebugInformationFormat".
wenn der den wert 0 hat, dann kann ich mich mit anderen programmen verbinden, also die socket-geschichte funktioniert. dann funktioniert aber das mit MySQL nicht mehr.
lasse ich "DebugInformationFormat" komplett weg, dann kann ich MySQL benutzen, aber kann mich nicht mehr über netzwerk verbinden -.-
alles nur in release
EDIT:
wenn ich die netzwerkverbindung nicht benutzen kann, kann ich mich zwar mit connect verbinden() aber es werden keine funktionen wie OnConnect() oder OnReceive() aufgerufen, was sonst funktionieren würde.
-
der / die fehler sind jetzt weg. habe auch lange genug dran gesessen -.- wie genau ich die fehler beseitigt habe kann ich selber nicht so genau sagen, bin mittlerweile einfach nur froh das sie weg sind !! ^^