async socket synchronisieren



  • wie mache ich das? durch archive?, oder buffer?



  • Was ist genau deine Frage?



  • ich habe CSocket verwendet, um server und client zu kommunizieren.
    aber es ist asynchron.
    die Sequenz ist so:
    client sendet was zu server, server bekommt und verarbeitet es, dann sendet Reply zurück, (true or false).
    client bekommt die Antwort, wenn es ist true, sendet noch eine andere Anforderung, sonst nichts.
    leider die Sendung in client ist in eine for-schleife, d.h. client wird immer senden, before er die Antwort vom Server bekommt.



  • Wenn der Server auch von dir ist dann wirst du vermutlich ein Protokoll vereinbaren müssen damit der Server weiß wann der Client nun alles gesendet hat.
    Es ist ja nicht sicher das der Server alles in einem Packet bekommt.



  • client

    for(int i = 0; i < 5; i++)
    {
      send() //server onReceive wird sofort aufgerufen
    }
    ...
    OnReceive()
    {
      //Antwort vom Server, nur wenn alle "Send" durch sind, ich kann nicht einzelne Anwort vom Server bekommen
    }
    

    server

    OnReceive()
    {
      do{
         ReadMsg(pSocket, l_cmd, l_msg );
      }while (!pSocket->m_pArchiveIn->IsBufferEmpty());//einzelne abgefangen
      send() //send reply to client, cleint bekommt das nicht sofort, es ist noch   in for-schleife
    }
    

Anmelden zum Antworten