Probleme mit Select bei Sockets auf 64Bit
-
Na dann kontrolliere mal die Werte für Deinen Socket. Vermutlich stimmt genau die Fehlermeldung und die Socket Adresse ist falsch.
-
Aber auf 32 Bit funktioniert der Code ja!
Un der wert welchen Ich bei printf("Socket: %d\n",fd); ausgebe habe Ich in beiden Codeteilen!
-
Gleiche Betriebssystem?
-
Ja, Windows7 64-Bit
-
Hatt da keiner noch ne idee dazu?
-
Schon mal versucht IPv6 zu deaktivieren vielleicht funktioniert es dann.
-
jogibear9988 schrieb:
FD_SET((SOCKET)(di->fd.rfd), &FDS);
Wieso musst du hier casten? Zeig mal die Struktur von dem
di
-Objekt und von welchem Typ ist das rfd?
Kannst du das Ganze auf ein kleines kompilierbares Beispielprogramm runterbrechen, das den Fehler noch aufweist?
-
rfd ist vom Typ HANDLE, da es nicht nur für Sockets sondern auch für andere Handels verwendet wird.
(Ich Versuch da eine OpenSourceLib (libnodave) welche zur Kommunikation mit Siemens SPSen ist auf 64 Bit zu bringen. Diese kann auch Protokolle über den seriellen Port, daher ist rfd vom Typ Handle)
-
Kannst du das Ganze auf ein kleines kompilierbares Beispielprogramm runterbrechen, das den Fehler noch aufweist?
-
Mhmm, glaub das wird nicht so einfach. Aber Ich schau mal ob Ich das hinbekomme. Vielleicht finde Ich ja dabei auch selbst den Fehler!
Ansonsten:
Vielleicht hat ja jemand lust schon mal in den Code der Lib zu schauen.Den gibts hier:
http://sourceforge.net/projects/libnodave/ (ist nicht von mir!)In der openSocketw.c wird das Socket geöffnet, und in nodave.c erfolgt die ganze Verarbeitung...
-
Hast Du irgenwelche Erfolge mit der Umsetzung der Libnodave auf 64 Bit. gehabt. Ich versuche mich gerade selber erfolglos daran.
Ich komme bis connectPLC . Diese Funktion gibt mir aber -1 zurück.Mike