boost.asio : daytime server
-
Oh Mann, ich verstehe echt nicht warum du immer noch rumrätst. Guck dir doch einfach an was der Returncode von listen() ist. Oder kannst du deinen Debugger nicht bedienen? In dem Fall musst du halt fragen oder gucken ob du Tutorials für den Debugger findest - allerdings muss ich sagen der MSVC Debugger ist das einfachste wo gibt.
BTW: hast du WSAStartup aufgerufen?
-
hustbaer schrieb:
Oh Mann, ich verstehe echt nicht warum du immer noch rumrätst.
hmmm... hast du nen besseren vorschlag ?

hustbaer schrieb:
Guck dir doch einfach an was der Returncode von listen() ist
hab ich doch schon des öfteren und auch schonmal hier gepostet.
hustbaer schrieb:
Oder kannst du deinen Debugger nicht bedienen? In dem Fall musst du halt fragen oder gucken ob du Tutorials für den Debugger findest - allerdings muss ich sagen der MSVC Debugger ist das einfachste wo gibt.
das was du mir bisher geschrieben hast hab ich doch geschnallt aber es geht hier nicht um winsock sondern um eine netzwerk library. Wie soll ich denn da an die Funktionen im object file kommen?
hustbaer schrieb:
BTW: hast du WSAStartup aufgerufen?
der code ist plattformunabhängig. ein WSAStartup kommt außerdem in keinem Tutorialcode vor.
-
also gut: mein debugger findet probleme bei 2 membern des asio::io_service objekts io was essentiell für asio ist
io.impl_ Fehler: "io.impl_" ist nicht vorhanden.
(*io.service_registry_).owner_ Fehler: "*io.service_registry_.owner_" ist nicht vorhanden.kann dir leider nur nicht sagen wie sich das auswirkt, werde aber noch die duko etwas studieren.
-
Oh Mann, du machst das echt kompliziert.
Also. *Welchen* Errorcode liefert denn ::listen() zurück? Also nicht die ASIO Version sondern einfach das globale ::listen() vom alten WinSock.
Könnte es sein dass es vielleicht EADDRINUSE ist?
Könnte es sein dass Port 13 schon belegt ist?
Hast du es mit einem anderen Port probiert?
-
hustbaer schrieb:
Also. *Welchen* Errorcode liefert denn ::listen() zurück? Also nicht die ASIO Version sondern einfach das globale ::listen() vom alten WinSock.
ich kenn das schon aber datt gibts da nicht. glaub mir dieses listen is so verschachtelt, schon allein asio.hpp bindet 54 weitere asio header ein, die wieder andere und zusätzlich noch boost header! das versteckt alle plattforspeziefischen funktionen. es gibt also _keine_ winapi funktion, die ich aufrufen muss und keine von der ich nen rückgabewert erhalte.
hustbaer schrieb:
Könnte es sein dass es vielleicht EADDRINUSE ist?
kein schimmer was das ist

aber meine winsock proggies gehen nochhustbaer schrieb:
Könnte es sein dass Port 13 schon belegt ist?
theoretisch ja. aber ich hab schon etliche andere probiert und da tut sich auch nix.
-
Dann such dir ::listen() halt nicht aus asio heraus, sondern schreib einfach selber ein mini-testprogramm *ohne* asio.
Edit:
http://beej.us/guide/bgnet/output/html/multipage/syscalls.html#listen
-
ja das funtzt doch...
-
Also ich weiss nicht was das Problem ist.
Ich habe den "asynchronous daytime tcp server" aus dem Tutorial ausprobiert, und bei mir geht das 1A.Mit der ASIO 0.3.7 wohlgemerkt, die 0.3.8rc3 geht bei mir nicht (die "error" Klasse ist irgendwie nicht brauchbar, die lässt sich nicht auslesen und das "if (!error)" im "daytime server tutorial" lässt sich nicht compilieren.
Mit der 0.3.7 aber wie gesagt: keine Probleme und der Server läuft auch schön brav.
Der ::select Aufruf ist bei der 0.3.7 übrigens in socket_ops.hpp, Zeile 120. Wirklich nicht schwer zu finden wenn man mit dem Debugger durchsteppt.
----
Bitte berschreib doch einfach mal welche Libraries (boost, asio) du runtergeladen hast, also genaue Version etc. Und hast du die asio wie beschrieben ins boost Verzeichnis reinkopiert? Stimmen die include Pfade?
Und wieso kannst du die ASIO einfach über "asio.hpp" includieren und im Namespace ::asio ansprechen? Bei mir ist das immernoch <boost/asio.hpp> und Namespace boost::asio.Ich schätze mal du dürftest da irgendwas beim Einbinden der Library gröber falsch gemacht haben...
-
hustbaer schrieb:
Also ich weiss nicht was das Problem ist.
Ich habe den "asynchronous daytime tcp server" aus dem Tutorial ausprobiert, und bei mir geht das 1A.
Mit der ASIO 0.3.7 wohlgemerkt, die 0.3.8rc3 geht bei mir nicht (die "error" Klasse ist irgendwie nicht brauchbar, die lässt sich nicht auslesen und das "if (!error)" im "daytime server tutorial" lässt sich nicht compilieren.
Mit der 0.3.7 aber wie gesagt: keine Probleme und der Server läuft auch schön brav.
Der ::select Aufruf ist bei der 0.3.7 übrigens in socket_ops.hpp, Zeile 120. Wirklich nicht schwer zu finden wenn man mit dem Debugger durchsteppt.Vielen Dank erstmal, dass du dir die Mühe gemacht hast, es selbst auszuprobiern. verstehe nur nicht ganz wie du auf select kommst, bzw. warum du vermutest, dass genau dort was schief läuft. jedoch läuft bei mir jetzt wiederum die error klasse

hustbaer schrieb:
Bitte berschreib doch einfach mal welche Libraries (boost, asio) du runtergeladen hast, also genaue Version etc.
boost dürfte 1.33.1 sein und asio ist eben die neueste, also .3.8 rc3.
hustbaer schrieb:
Und hast du die asio wie beschrieben ins boost Verzeichnis reinkopiert? Stimmen die include Pfade?
jo passt alles.
hustbaer schrieb:
Und wieso kannst du die ASIO einfach über "asio.hpp" includieren und im Namespace ::asio ansprechen? Bei mir ist das immernoch <boost/asio.hpp> und Namespace boost::asio.
alles tutorialcode. also wenn man die pfade entsprechend gesetzt hat geht das so. außerdem steht zu beginn fast jeden bsps
using asio::ip::tcp;werde jetzt aber auch mal auf 0.3.7 umsteigen ggf auch auf boost 1.34.0 und auch äußere sachen wie firewall für bestimmte programme oder internetoptionen checken... nur komisch eben, dass normale Winsock programme laufen

-
probier deine exe doch mal bei freunden aus
-
hustbaer schrieb:
Mit der 0.3.7 aber wie gesagt: keine Probleme und der Server läuft auch schön brav.
hätte nicht gedacht, dass ich das nochmal sagen werd, aber: ES LÄUFT
:p

Recht herzlichen Dank für den Tip und auch an alle anderen, die sich an dem Thread beteiligt haben!

Scheint wohl noch kleinere Probleme mit den rcs zu geben (zumindes untern windows mit ms compiler) aber die .3.7-er version läuft jetzt auch einwandfrei

-
rudi++ schrieb:
hustbaer schrieb:
Also ich weiss nicht was das Problem ist.
Ich habe den "asynchronous daytime tcp server" aus dem Tutorial ausprobiert, und bei mir geht das 1A.
Mit der ASIO 0.3.7 wohlgemerkt, die 0.3.8rc3 geht bei mir nicht (die "error" Klasse ist irgendwie nicht brauchbar, die lässt sich nicht auslesen und das "if (!error)" im "daytime server tutorial" lässt sich nicht compilieren.
Mit der 0.3.7 aber wie gesagt: keine Probleme und der Server läuft auch schön brav.
Der ::select Aufruf ist bei der 0.3.7 übrigens in socket_ops.hpp, Zeile 120. Wirklich nicht schwer zu finden wenn man mit dem Debugger durchsteppt.Vielen Dank erstmal, dass du dir die Mühe gemacht hast, es selbst auszuprobiern. verstehe nur nicht ganz wie du auf select kommst, bzw. warum du vermutest, dass genau dort was schief läuft. jedoch läuft bei mir jetzt wiederum die error klasse

*räusper*
Die Stelle müsste eh sein wo das ::listen steht, hab mich da wohl beim Tippen vertan
Ich weiss garnicht ob die Windows Version überhaupt select verwendet, glaube nicht, ich glaube die verwendet IO completion ports oder sowas.