Я задавал этот вопрос раньше и не имел разрешения (проблема все еще остается). Я озадачен, потому что функция вернулась без ошибок и никаких данных не было отправлено! Этот код работает в Linux ... версия VxWorks не работает (sendto не отправляет, хотя возвращает без ошибки).
Сводка - я пишу простой эхо-сервер - сервер успешно получает
данные (из коробки x86) и утверждает, что он успешно отправил обратно.
Однако на клиенте НЕТ ДАННЫХ (netcat на x86). это
код работает на VxWorks 5.4 на коробке PowerPC ...
Я как-то буферизовал данные UDP?
Может ли другая задача препятствовать отправке sendto? (НЕ для того, чтобы начать погоню за диким гусем, но я создаю свое приложение с обычным приоритетом, т. Е. Ниже критических задач, таких как сетевая задача и т. Д. И т. Д., Так что все в порядке).
Может ли VxWorks буферизовать мои данные UDP?
У меня есть таблица маршрутизации ... pinging работает!
БЕЗОПАСНОСТИ НЕ БУДЕТ AFAIK ...
Каковы нюансы sendto и что может помешать моим данным
достигая клиента ...
while(1)
{
readlen = recvfrom(sock, buf, BUFLEN, 0, (struct sockaddr *) &client_address, &slen);
if (readlen == ERROR)
{
printf("RECVFROM FAILED()/n");
return (ERROR);
}
printf("Received %d bytes FROM %s:%d\nData: %s\n\n",
readlen, inet_ntoa(client_address.sin_addr),
ntohs(client_address.sin_port), buf);
// Send it to right back to the client using the open UDP socket
// but send it to OUTPORT
client_address.sin_port = htons(OUTPORT);
// Remember slen is a value (not an address ... in, NOT in-out)
sendlen = sendto(sock, buf, BUFLEN, 0, (struct sockaddr*)&client_address, slen);
// more code ....
}