Frage

Diese sendet Daten nur einmal die mich irrational scheint, wie es in einem for-Schleife ist:

char* hello;
for (int i = 0; i < 10; i++) {

    hello = "Hello world!\n";
    if (UDT::ERROR == UDT::send(client, hello, strlen(hello) + 1, 0))
    {
        cout << "send: " << UDT::getlasterror().getErrorMessage();
    }

}

Sollte es nicht Daten 10-mal schicken? Ich verstehe es nicht. Hier ist das ganze Programm (es ist ziemlich kurz):

int main()
{
    UDTSOCKET client;
    sockaddr_in serv_addr;
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(9000);
    inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);
    memset(&(serv_addr.sin_zero), '\0', 8);

    client = UDT::socket(AF_INET, SOCK_STREAM, 0);

    // connect to the server, implict bind
    if (UDT::ERROR == UDT::connect(client, (sockaddr*)&serv_addr, sizeof(serv_addr)))
    {
        cout << "connect: " << UDT::getlasterror().getErrorMessage();
    }

    char* hello;
    for (int i = 0; i < 10; i++) {

        hello = "Hello world!\n";

        if (UDT::ERROR == UDT::send(client, hello, strlen(hello) + 1, 0))
        {
            cout << "send: " << UDT::getlasterror().getErrorMessage();
        }

    }

    UDT::close(client);

    system("pause");
}

Andere Tipps

geht es durch die Schleife 10-mal, oder geht nur durch die Schleife einmal?

Ich bin nicht vertraut mit der Bibliothek, die Sie verwenden, aber ich habe nicht jede Art von flush Befehl sehen. Wenn es durch die Schleife 10 Mal geht aber nur Daten sendet einmal, Sie könnten zu spülen müssen.

Client und Serverstruktur stimmt nicht überein.

Client sendet 10-mal innerhalb 1-Verbindung. Server übernimmt 10 Verbindungen und liest nur 1 Mal innerhalb jedes einzelnen.

Offensichtlich jede Verbindung ist simmilar in einen Behälter. Daten gesendet, aber nicht lesen, nachdem eine Verbindung geschlossen wird verworfen und (natürlich) nicht auch von anderen Verbindungen.

scroll top