我正在使用 IPG CarMaker 并尝试使用 UDP 将数据实时导出到另一台机器。我指的是http://www.codeproject.com/Articles/11740/A-simple-UDP-time-server-and-client-for-beginners。我想在客户请求时发送汽车的位置。现在,我已将上述代码包含在时间步长为 1 毫秒的 CarMakers 主循环中。我构建程序时没有问题(使用 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;
}