このコードは Windows では問題なく動作しますが、Linux では gethostbyaddr が NULL を返します。
私は非常に多くの変更を試みましたが、成功しませんでした。
私の /etc/host.conf には次の行があります
ホストの注文、バインド
完全なコードを実行し、アドレス 11.234.456.74 を渡します。Windows では gethostbyaddr がアドレスを解決し、正常に動作します。ただし、Linux では IP アドレスが解決されず、NULL が返されます。
助けてください。
#ifdef WIN32
if (init){
WSADATA wsaData;
// Request Winsock version 2.2
if (WSAStartup (MAKEWORD(1, 1), &wsaData) != 0) {
WSACleanup();
exit (EXIT_FAILURE);
}
init = 0;
}
#endif
// Open required socket
p_socket[IP_SOCKET_SOCKET] = socket(AF_INET, server_socket_type, 0);
if ( p_socket[IP_SOCKET_SOCKET] < 0 ) {
#ifdef WIN32
WSACleanup();
#endif
exit (EXIT_FAILURE);
}
destAdrLen = mxGetM(prhs[0]) * mxGetN(prhs[0]) + 1;
destAdr = (char *) mxMalloc(destAdrLen);
if (destAdr == NULL) {
mexErrMsgTxt("mxMalloc(destAdrLen) failed");
}
mxGetString(prhs[0], destAdr, destAdrLen);
destPort = (int) mxGetScalar(prhs[1]);
if (isalpha(destAdr[0])) {
// socket address is a name
hp = gethostbyname(destAdr);
}
else {
// socket address is a number
addr = inet_addr(destAdr);
hp = gethostbyaddr((char *)&addr, 4, AF_INET);
}