質問

:それはループの中にあるように、

これは私には不合理なようで、一度だけデータを送信します

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();
    }

}

万一それがデータを10回送信しませんか?私はそれを理解していません。ここでは、プログラム全体が(それはかなり短いです)です。

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");
}
役に立ちましたか?

解決

あなたは、サーバー側のコードを確認しました。やっているクライアントは、forループで送信し、それらをどのように受信サーバ側で?

編集: ここにあなたのポストへの参照でを。サーバーのコードは次のようになります場合は、それは一度だけ受信します。サーバは、クライアントからの接続が再び一旦受け取り、クライアントからの接続を待ちつつあります。しかし、クライアントはループに送信し続けます。これは、サーバーのコードであることをそのわずかの推測では、私が間違っている可能性があります。

while (true)
{
  UDTSOCKET recver = UDT::accept(serv, (sockaddr*)&their_addr, &namelen);

  cout << "new connection: " << inet_ntoa(their_addr.sin_addr) << ":" << ntohs(their_addr.sin_port) << endl;

  if (UDT::ERROR == UDT::recv(recver, data, 100, 0))
  {
    cout << "recv:" << UDT::getlasterror().getErrorMessage() << endl;
    //return 0;
  }
....................
....................
}

他のヒント

これは、ループを10回行って、またはのみ?

一度ループを通って行きます

私はあなたが使用しているライブラリに慣れていないんだけど、私はflushコマンドのいずれかの種類を見ていません。それはループを10回になりますが、一度だけデータを送信する場合、あなたがフラッシュする必要があるかもしれません。

クライアントとサーバーの構造が一致していません。

クライアントは、1つのコネクション内で10回を送信します。 サーバ10個の接続を受け付け、各内部のみ1時間を読み出す。

明らかに、各接続は、コンテナにsimmilarです。データが送信されますが、接続を閉じると破棄され、他の接続から(もちろん)アクセスすることはできませんされた後に読んでいます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top