當我使用Android NDK調用recvfrom
,我得到NULL
回到了我的sockaddr_in
from
。同樣的確切代碼在我的桌面環境中工作正常,但不在設備上。的Android NDK(套接字) - recvfrom的()從空的sockaddr *設置(不能發送的獲取IP)
int MyClass::ReceiveData(char *buffer, int bufferLength)
{
int numBytes = 0;
struct sockaddr_in from;
socklen_t fromLength = sizeof(struct sockaddr_in);
numBytes = recvfrom(mConnectionSocket,
buffer,
bufferLength,
0,
(struct sockaddr *)&from,
&fromLength);
if (numBytes == -1)
perror("recvfrom");
int fromAddress = ntohl(from.sin_addr.s_addr);
return fromAddress;
}
有人有什麼想法嗎?
您是否正確打包應用程序以包含此文件?當你說桌面你的意思是模擬器...? – JPM
不,不是仿真器,我構建了一個程序,該程序在我的計算機上的命令行中運行,並使用相同的確切代碼。它在我的電腦的'from'中獲得正確的IP地址,但由於某些原因,它不會在Android設備上。 有人曾經有過相同的問題,但沒有人提到過修正:http://groups.google.com/group/android-developers/browse_thread/thread/6c380cadccca079b – Teclys
您可以發佈您的標題代碼,以查看哪些* .h你的使用和你的製作文件爲Android NDK? – JPM