Socket funktioniert nicht



  • 1.Winsock2.h (falls das ein Api ist)
    2.keine Fehlermeldung vom Compiler
    Allerdings stürzt mein Prog beim connecten ab
    (Socket kann ich aufbauen)
    3.Ich nutze Wlan/Lan hauptsächlich Lan
    Dieses Prog habe ich mit Lan am localhost und mit Wlan
    mit dem Pc von meiner Mum getestet(Wlan)

    DNS hab ich schon probiert (mit no-ip)
    Hat aber nich gefunzt 😞

    Und was ist Wan? 😕

    Weiteres:

    • Compiler: Visual C++ 2010 Express
    • CRL nicht genutzt
    • Laufzeitbibliothek: Multitreaded Debug
    • Header:
      ->stdafx.h
      ->iostream
      ->Windows.h
      ->fstream
      ->WinSock.h
    • Namespace: nur std
    • keine Fehler(localhost funzt ja) + keine warnungen

    ➡ Es gibt wahrscheinlich eine Funktion, mit der man andere Fehler abfragen kann, oder...

    Mehr fällt mir grad nicht ein... 😉



  • Ich habs jetzt mit dem laptop von meinem Dad ausprobiert, aber da war das gleiche
    (Der hat zwar Lan, aber es kann auch sein, dass der einfach mit fast 11 Jahren zu alt ist 😃 )



  • WAN = Wide Area Network = i.A. das Internet

    Dein Problem wird damit zu tun haben, dass du zwar in der Desktop-Firewall ne Ausnahme eingetragen hast, aber deinem Router nichts davon erzählt hast. Der muss das nämlich auch wissen.



  • du könntest natürlich mal deine connect-routine zeigen, wir sagen dir, dass du einen funktions-rückgabewert checken musst, du wirst das tun; sagen der signalisiert wirklich einen fehler. dann sagen wir dir, dass du dann GetLastError benutzen solltest, um einen richtigen fehlercode zu bekommen und dann bekommen wir auch nur heraus, dass die verbindung nicht hergestellt werden konnte, weil:
    falsche ip/hostname
    falscher port
    router firewall blockt port
    pc blockt port
    ...

    also am besten, du versuchst es selbst auf eine funktion und einen errorcode zu beschränken - dann findet sich bestimmt wer, der genau sagen kann, was da passiert ist (bzw passiert sein könnte).
    dass das programm einfach abstürzt, spricht allerdings nicht gerade für dein programm.

    bb



  • unskilled schrieb:

    um einen richtigen fehlercode zu bekommen und dann bekommen wir auch nur heraus (...)
    falsche ip/hostname
    falscher port
    router firewall blockt port
    pc blockt port
    ...

    Du stellst dir das alles ein bisschen zu einfach vor.
    Über den Error-Code des TCP/IP Stack kann man maximal folgende Fälle unterscheiden:
    * Keine Antwort
    * Verbindung wurde "aktiv" abgelehnt
    * Verbindung wurde angenommen (=Erfolg)

    Und zwar ganz einfach deswegen, weil TCP gar nicht mehr Fälle unterscheiden kann. Wer die Verbindung blockt bekommt man so ohne weiteres nicht heraus. Und nichtmal den Fall "falsche IP" kann man zuverlässig erkennen, da die meisten Firewalls/Router so eingestellt sind, dass sie nicht "aktiv ablehnen", sondern sich einfach tot stellen wenn sie eine Verbindung nicht haben wollen.



  • ist mir schon klar. ich wollte damit nicht sagen, dass mit dem errorcode eindeutig bestimmt werden kann, was genau nicht geht...
    aber man kann den fehler halt eingrenzen.

    nach wie vor tippe ich aber auf den router : P



  • Ich habe eine Fehlerüberprüfung so gemacht:
    C/C++ Code:
    int errorcode = GetLastError()
    C/C++ Code:
    int errorcode = GetLastError()
    stimmt das so? (oder ist das total falsch xD) rauskam: 10015 ich finds aber unlogisch...

    <edit 21.5.12> Es war doch errno: 100060, also zeitüberschreitung, sry... </edit>



  • Ich habe eine Fehlerüberprüfung so gemacht:

    int errorcode = GetLastError()
    

    stimmt das so? (oder ist das total falsch xD) rauskam: 10015 ich finds aber unlogisch...

    <edit 21.5.12> Es war doch errno: 100060, also zeitüberschreitung, sry... 🙄 </edit>



  • Die funktionsrückgabewerte hab ich geprüft -> connect() geht nicht. Wie kann ich dem router die ausnahme mitteilen?? Weitere infos, etc. frühenstens dienstag 😞



  • virusscript24 schrieb:

    Wie kann ich dem router die ausnahme mitteilen??

    Na indem du ihn entsprechend konfigurierst.
    STFW



  • Aber dann muss der anwender das ja auch machen...

    Es kann ja auch sein,dass die IP fasch is.
    Die IP hab ich über www.wieistmeineip.de rausgefunden.
    Dann hab ich noch die ausprobiert, die unter ipv4 bei
    ipconfig in der cmd kam. Dann hab ich auch noch ne hamachi nummer...

    hat aber nur bei der hamachi nummer gefunzt. 😞
    (auch nur am localhost)

    Außerhalbnicht mehr...



  • virusscript24 schrieb:

    Aber dann muss der anwender das ja auch machen...

    Wer ist 'der anwender'?
    Wenn Du einen Service laufen lässt, der auf Port xy lauscht, dann kann das natürlich nur funktionieren, wenn Dein Router Anfragen auf xy nicht blockt. Denn sonst merkt Dein Service ja gar nicht, dass da ein Client ist, der sich verbinden möchte.



  • @virusscript24
    Dir fehlen dummerweise Grundlagen, und zwar so viele, dass ich nicht denke dass ein Thread in diesem Forum geeignet ist da Abhilfe zu schaffen.
    Lies dich ein wenig in die Themen TCP/IP, Routing und Netzwerke i.A. ein.

    Dann wirst du vermutlich irgendwann selbst verstehen was da passiert und warum. Und auch was du für Möglichkeiten hast es zum Laufen zu bekommen.



  • Ok, ich versuchs...

    Trotzdem Danke 🙂



  • Ok, jetzt geht's 😃
    Lag am Virenscanner 😡

    Trotzdem danke undvsrs, dass ich eure Zeit verplempert habe. 🙄
    Tut mir echt leid...


Anmelden zum Antworten