我的任務是檢查IP是否存在或不存在。所以我跟着這個link和修改的代碼如下所示...呼叫連接需要太多時間
int isServerAlive(const char* serverAdd)
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(65432); // Could be anything.
inet_pton(AF_INET, serverAdd, &sin.sin_addr);
if (connect(sockfd, (struct sockaddr *) &sin, sizeof(sin)) == -1)
{
// The two main errors you get if the host is dead are ENETUNREACH and ETIMEDOUT.
if (errno == ENETUNREACH || errno == ETIMEDOUT)
{
printf("Error connecting %s: %d (%s)\n",serverAdd, errno, strerror(errno));
return FAILURE;
}
}
return SUCCESS;
}
當我嘗試執行該代碼,連接調用花費過多時間。
- 我在這裏做錯了什麼嗎?
- 有沒有其他更好的方法來檢查IP是否存活?
在此先感謝。
可能是防火牆問題? – NJMR
_ ** //可能是任何東西。** _不正確。這取決於您的平臺,並取決於您的服務器端套接字配置 – LPs