【发布时间】:2016-09-30 02:28:12
【问题描述】:
如果地址向上返回 1,如果地址向下返回 0,我想制作一个程序作为检查网。这是代码:
#include <stdio.h>
#include <winsock2.h>
#include <stdint.h>
#pragma comment(lib, "ws2_32.lib")
static void init(void)
{
WSADATA wsa;
int err = WSAStartup(MAKEWORD(2, 2), &wsa);
if(err < 0)
{
puts("WSAStartup failed !");
exit(EXIT_FAILURE);
}
}
static void end(void)
{
WSACleanup();
}
int chknet(char * ip)
{
struct sockaddr_in name;
struct hostent * hent;
int sock;
int retour = 0;
init();
/* creat socket icmp */
if(!(sock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP))) return (-1);
memset(&name,0,sizeof(struct sockaddr_in));
name.sin_family = AF_INET;
name.sin_addr.s_addr = inet_addr(ip);
if(connect(sock,(struct sockaddr *) &name,sizeof(struct sockaddr))==0) retour = 1;
else retour = 0;
end();
return(retour);
}
// Fonction main ***************************
int main(int argc, char *argv[])
{
char *adress="www.stackoverflow.com";
int a= chknet(adress);
printf("result %d\n",a);
system("PAUSE");
}
当我连接到互联网时,它返回 1,但即使我没有连接,它也返回 1,但它应该返回 0。 谢了
【问题讨论】: