TCP/IP-Verbindung: Speicher löschen



  • Hallo zusammen!

    Ich möchte Daten zwischen einem Windows und einem Linux System austauschen. Dazu habe ich die TCP-Verbindung auf der Linux-Maschine folgendermaßen konfiguriert:

    int ITCPPortOpen()
    {
     int Sockfd, IBindStatus, IAcceptStatus, IListenStatus, i;
     struct sockaddr_in address;
    
     Sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
    
     i = 1;
     setsockopt(Sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
    
     address.sin_family = AF_INET;
     address.sin_port = htons(PORT_NUMBER);
     address.sin_addr.s_addr = INADDR_ANY;
    
     if(Sockfd >= 0)
     {
      IBindStatus = bind(Sockfd, (struct sockaddr *) &address, sizeof(address));
      printf("%s\n", strerror(errno));
      if (IBindStatus < 0)
      {
       close (Sockfd);
       Sockfd = -1;
      }
     }
    
     if (Sockfd >= 0)
     {
      IListenStatus = listen(Sockfd, 1);
      if (IListenStatus != 0)
      {
       close (Sockfd);
       Sockfd = -2;
       if (IListenStatus >= 0)
        Sockfd = -3;
      }
    
      if (IListenStatus == 0)
      {
       IAcceptStatus = accept(Sockfd, NULL, NULL);
    
       if(IAcceptStatus < 0)
       {
        close (Sockfd);
        Sockfd = -4;
       }
      }
     }
     return IAcceptStatus;
    }
    

    mit

    send(IInterface, UCFrame, UCFrame[2 + IFrameOffset] + 3 + IFrameOffset, 0);
    

    und

    recv(IInterface, &UCFrame[2 + count + IFrameOffset], 1, 0);
    

    sende und empfange ich Daten. Nun möchte ich die Möglichkeit haben, anhand eines empfangenen Bytes zu entscheiden, ob die folgenden Bytes auch empfangen werden sollen, oder ignoriert werden. Und genau das ist mein Problem: Wie ignoriere ich Bytes, die über eine TCP-Verbindung an meine Linux-Maschine geschickt wurde? Bei der seriellen Schnittstelle würde ich

    tcflush(fd, TCIOFLUSH)
    

    nehmen. Das scheint aber hier nicht zu funktionieren. Bis jetzt empfange ich die Daten zwar und speichere sie kurzfristig in einer Variablen, um sie anschließend zu überschreiben oder so. Gibt es eine elegantere Möglichkeit den (ich nenn ihn mal) "TCP-Speicher" zu löschen?

    Viele Grüße

    toolen



  • Hallo,

    ne, kannst soweit ich weiß nix löschen. Dein Betriebssystem sendet ja schon jedesmal ein Paket wenn Daten ankommen, nachher verwerfen musst du sie selber.


Anmelden zum Antworten