Fehler bei Winsock Programmierung
-
Hallo,
also liegt es am Port und dem Big-Endian Format?
Nicky
-
Programm läuft...
Die Connect-Funktion muss in einem extra Thread laufen sonst geht es nicht..
Gruß und Danke
Nicky
-
xor ebx, ebx mov cx, 16 mov bx, 00h shl ebx, cl
Was hast du dir denn dabei gedacht?
2 mal das Register nullen und dann die 0 shiften???
-
Ja, da habe ich dann mit den Registern bh und bl gearbeitet. Es wird ja nur ein Word gebraucht.
Aber mein Programm läuft wie gesagt.
Habe noch eine Frage zu Threads...
Was passiert wenn der Thread in der Prozedur auf ein RET stößt?
Beendet er sich dann selbst oder wohin kehrt er da zurück?Ich dachte einen Thread beendet man mit CloseHandle, obj_id???
Wie mache ich es hier richtig?
Nicky
-
supernicky schrieb:
Was passiert wenn der Thread in der Prozedur auf ein RET stößt?
Beendet er sich dann selbst oder wohin kehrt er da zurück?In die Kernel.dll, wo dann ExitThread() Aufgerufen wird. Eine Thread sollte man allerding besser (laut Doku) direkt mit ExitThread() beenden.
Das Handle des Threads ist unabhängig von der Ausführung - dies kannst du entweder direkt nach dem Erstellen schließen, oder nach dem der Thread beendend ist (z.B. in Anschluss auf WaitForSingleObject()).
-
Aber das RET muss auf jeden Fall in die Prozedur die der Thread ausführt?
Ich schließe alle Handles beim beenden der Anwendung, hoffe das reicht..
Danke erstmal für die vielen Antworten...
Nicky
-
supernicky schrieb:
Aber das RET muss auf jeden Fall in die Prozedur die der Thread ausführt?
ja - wohin denn sonst?
-
Hallo,
wie kann ich ein Socket prüfen ob es noch verbunden ist?
Nicky
-
Wird hier ganz gut erklärt
-
Hallo,
Dank solcher Antworten könnte man jedes Forum schließen...
Ich habe einiges unternommen um eine passende Antwort zu bekommen.
Selbst auf der MSDN Seite habe ich nichts gefunden.In VB kann man mit einer IF Abfrage schauen ob eine Verbindung besteht.
if socket.connected = false then...
// hier der Code wenn nicht verbunden
end ifFür C hab ich nichts vergleichbares gefunden.
Bis zu deiner grandiosen Antwort hab ich mir aber auch schon was überlegt..
Ich versuche das erstmal und hoffe hier nicht mehr viel Fragen zu müssen...Nicky
-
getsockopt(SO_CONNECT_TIME).
Gibt -1 zurück, wenn der Socket getrennt ist.
-
Ob eine TCP-Verbindung noch besteht kannst du nur testen indem du etwas sendest.
-
ok...
wenn der Befehl send() -1 zurück gibt, dann ist wohl keine Verbindung mehr vorhanden...
Nun nochwas...
Weiß jemand wie man die eigene IP mit der WinAPI ermittelt?
Es gibt dort einige Funktionen wie gethostbyname ode getaddrinfo, aber ich weiß nicht wo in den ganzen Strukturen sich dann die IP versteckt.Gibt es irgendwo ein Beispiel in dem es nur um die lokale IP geht, ich brauch keine Alias- oder Service Infos von meinem Socket.
Danke und Gruß
Nicky
-
Irgendwie bewegst du dich hier langsam etwas vom Thema Assembler weg. Wenn du Fragen zur Win-API hast, bekommst du in unserem Win-API-Forum bestimmt sehr viel schneller bessere/ausfuehrlichere Antworten als hier. Wenn du dann noch Fragen/Probleme mit der konkreten Umsetzung in Assembler hast, bist du dagegen hier richtig...
Kann dir davon ab leider jetzt nicht konkret weiterhelfen, da ich in dem Thema nicht drinstecke und zu faul bin, nachzuschlagen.
-
Hallo nochmal,
ich habe wohl eine Mischung aus beiden vor mir liegen, da auch noch das auslesen der einzelnen Daten hinzukommt.
Ich versuch es mal drüben...
Trotzdem Danke
-
> wenn der Befehl send() -1 zurück gibt, dann ist wohl keine Verbindung mehr vorhanden...
Oder es ist etwas anderes schief gelaufen. Du müsstest dann mindestens WSAGetLastError() überprüfen.