listen() blockiert unter unix



  • Guten Tag,

    Zu erstmal, ich bin unter UNIX noch ein ziemlicher Neuling also
    bitte nicht gleich zerfleischen falls ich was dummes frage 😛

    Ich wollte mein socket Programm (das unter Windows ohne Probleme läuft)
    jetzt mal unter UNIX (genauer gesagt Ubuntu) testen.

    Ging ja auch alles weitgehend einfach, ein paar header ausgetauscht
    und fertig.

    Wenn ich das Programm jetzt allerdings starte, dann blockiert listen()
    und kehrt nicht zurück?

    Beispiel:

    socket()
    bind()
    listen() <-- Blockiert!
    accept()

    Woran kann das liegen? Unter Windows läuft das ganze einfach durch und erst accept() blockiert.

    Besten Dank schonmal für eure Hilfe 😉



  • Ok, Problem gelöst.
    Unix (Ubuntu) scheint 1. Text nur nach einem abschließendem
    "\n" anzuzeigen und 2. Ports nicht so einfach zu öffnen wie
    unter Windows.



  • 1. http://www.cppreference.com/wiki/c/io/fflush
    2. Doch Ports werden auch unter Linux einfach so geöffnet. Eventuell verhindert eine Firewall die Verbindung. Lokale Verbindungen laufen unter Windows auch nicht über das Netzwerkinterface.



  • Welchen Port verwendest du? Eventuell wird einer von einer Ubuntu Applikation bereits verwendet!


Anmelden zum Antworten