У меня есть некоторый код сокета, который работает на моем компьютере с Linux, но не работает на моем компьютере PowerPC.
Код (при работе на компьютере с Linux) получает данные от клиента и затем отправляет данные обратноклиент.При тестировании с двумя приложениями netcat данные успешно переносятся.
ПРОБЛЕМА: при тестировании на PowerPC (под управлением VxWorks) отраженные данные никогда не принимаются клиентом ... (netcat и wireshark ничего не показывают).
На PowerPC сервер успешно ПРИНИМАЕТ данные (от клиента x86) и утверждает, что он успешно ВЫБИРАЛ их обратно ... но НЕТ ДАННЫХ не получено на клиенте (netcat на x86) ..Я думаю, что я где-то совершил какой-нибудь ENDIAN foobar.Вот фрагмент кода, который существует на PowerPC.С двумя Linux-блоками x86 код работает нормально ...
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);
sendlen = sendto(sock, buf, BUFLEN, 0, (struct sockaddr *)&client_address, slen);
// more code ....
}
Может быть, мне тоже нужен адрес клиента?...