Kommunikation zwischen WinSock und MFC:CAsyncSocket



  • hallo,

    ich habe eine MFC-Dialogbasierte Server-Anwendung... meine Clients
    sind normale WinApi-Anwendungen.

    Wenn ich meinen Server beende sendet er (so verünftig wie er ist^^) allen
    clients einen End-Command das sie bescheid wissen.

    Wenn sich meine IP-Adresse ändert
    merken es die Clients aber garnicht und bleiben bei

    rc=recv(s,buf,sizeof(buf),0);
    if(rc==0)
    {
    	goto a;
    }
    if(rc==SOCKET_ERROR)
    {
    	goto a;
    }
    buf[rc]='\0';
    

    stehen.

    darf das so sein? warum ist das so? wie kann ich das lösen? ^^

    danke schonmal



  • duoBabel schrieb:

    darf das so sein? warum ist das so? wie kann ich das lösen? ^^

    Ääähhh.... Gut.. Also, das darf nicht so sein^^ Wenn du einen (Client-)Socket erstellst, gibst du dabei die IP-Adresse des Servers an. Wenn sich die IP-Adresse des Servers ändert, greifen alle sends und recvs in Leere.

    Wie du das lösen kannst? So wie ich das verstanden habe, lässt du deinen Server auf einem Single-PC laufen, auf dem auch die Clients laufen. Richtig? Wenn ja, dann kannst du einfach bei einem fehlgeschlagenen Senden (oder einem Timeout) prüfen, ob sich die IP-Adresse seit dem letzten Senden geändert hat. Wenn ja, dann bleibt dir wahrscheinlich nichts anderes übrig, als die Verbindung zum Server neu herzustellen.

    Allerdings kann es vielleicht sein, dass Windows die Sockets umbiegt, wenn du übers System die Inet-Adresse änderst... Wie gesagt, vielleicht...


Anmelden zum Antworten