sin_addr.s_addr = ?



  • Hi, ich habe mal eine Frage inbezug auf die bind() Function
    Wenn ich

    addr.sin_addr.s_addr = INADDR_ANY;
    

    eingebe,
    kommt ja meine IP dahin, (und bind später...)

    Aber wenn ich

    addr.sin_addr.s_addr = inet_addr("56.33.164.98");
    

    schreibe und bind mache, was passiert dann?
    Also wenn ich da eine fremde IP eingebe

    und was muss ich für addr.sin_addr.s_addr benutzen, htonl ode inet_addr?



  • Oder steht das für die clients, die connecten dürfen?....

    [Aber was ist der Unterschied zwischen htonl und inet_addr..]



  • Bei ner Fremd-IP wird nix passieren, weil Pakete mit der Fremd-IP deine Anwendung nicht erreichen werden (da dein Router/Netzwerkkarte/Treiber/Windows die Pakete an die IP bereits vorher wegschmeißen wird) - unabhängig davon das deine Anwendung sie verarbeiten täte.

    Wenn du die IP als Zeichenkette hast, dann inet_addr.

    The bind function associates a local address with a socket.

    Wenn du mit dem Socket auf den du bind() angewandt hast z.B. eine Verbindung zu einem anderen Rechner herstellst, wird der andere Rechner die bei bind() angegebenen Daten bekommen (bei INADDR_ANY wird das bei mehreren Netzwerk-Interfaces irgendeins davon sein).

    Wenn du selber Server spielst, wird listen() dann nur auf der bei bind() angegebenen IP-Adresse lauschen (oder auf allen verfügbaren bei INADDR_ANY)


Anmelden zum Antworten