다음은 사용자가 입력 한 주소의 IP 주소를 표시하려는 코드입니다. 그러나 STATUS_ACCESS_VIOLATION을 표시하며 그 이유를 이해하지 못합니다.이 코드에 대한 도움말 (STATUS_ACCESS_VIOLATION 제공)
잘 컴파일됩니다. 여기있다.
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
// Link to ws2_32.lib
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
struct protoent *proto=NULL;
int main(int count, char *strings[])
{
int pid;
struct hostent *host;
struct sockaddr_in addr;
if (count != 3)
{
printf("usage: %s <addr> < Adressflag = 0 for name and 1 for IP > /n", strings[0]);
exit(0);
}
if (count == 3)
{
int flag = atoi(strings[2]);
printf("flag is %d",flag);
if (flag == 0)
{
pid = getpid();
proto = getprotobyname("ICMP");
host = gethostbyname(strings[1]);
bzero(&addr, sizeof(addr));
addr.sin_family = host->h_addrtype;
addr.sin_port = 0;
addr.sin_addr.s_addr = *(long*)host->h_addr;
//traceroute(&addr);
printf("IP of %s is %s",host->h_name , host-> h_addr);
}
else
{
}
}
return 0;
}
나는 이것을 cygwin에서 돌리고있다. 누구든지 오류를 알고 누구든지 내가 뭘 잘못하고 있는지 말할 수 있습니까 ??
귀하의 질문에 대한보다 유익한 제목을 선택하십시오. –
디버거는 무엇을 말합니까? –
@Tomalak cygwin에서 어떻게 실행하나요? –