0

IPG CarMaker を使用しており、UDP を使用してリアルタイムでデータを別のマシンにエクスポートしようとしています。http://www.codeproject.com/Articles/11740/A-simple-UDP-time-server-and-client-for-beginnersを参照しています。クライアントが要求するたびに車の位置を送信したい。上記のコードを、タイムステップが 1 ミリ秒の CarMaker のメイン ループに含めました。プログラムをビルドしている間は問題ありません (Visual Studio 2010 を使用)。しかし、CarMaker でシミュレーションを実行しようとすると、次の行によりシミュレーションがタイムアウトします。

bytes_received = recvfrom(sd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&client, &client_length);

その結果、私のシミュレーションはまったく開始されません! 同時にクライアントを実行していないためですか?助けてください!メインループのコードは次のとおりです。

User_DrivMan_Calc (double dt) { client_length = (int)sizeof(struct sockaddr_in);

bytes_received = recvfrom(sd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&client, &client_length);

if (bytes_received < 0)
{
    fprintf(f, "Could not receive datagram.\n");
    closesocket(sd);
    WSACleanup();
    exit(0);
}

/* Check for time request */

if (strcmp(buffer, "GET DISTANCE\r\n") == 0)
{
    /* Get current time */
    current_time = time(NULL);
    d = Car.Distance;       
    /* Send data back */
    if (sendto(sd, (char *)&d, (int)sizeof(d), 0, (struct sockaddr *)&client, client_length) != (int)sizeof(d))
    {
        fprintf(f, "Error sending datagram.\n");
        closesocket(sd);
        WSACleanup();
        exit(0);
    }
}

return 0;

}

4

1 に答える 1