pcap 라이브러리를 쓴 프로그램인데 봐주셔요.

romz1212의 이미지

#include "stdio.h"
#include "pcap.h"
#include "winsock2.h"
 
int main(int argc, char **argv)
{
	pcap_if_t *alldevs;
	pcap_if_t *d;
	char errbuf[PCAP_ERRBUF_SIZE];
	int i=0;
 
위에는 pcap_findalldevs 를 위한 변수들이구요
 
	char	*dev;
	bpf_u_int32 net;
	bpf_u_int32 mask;
	SOCKADDR_IN net_addr, mask_addr;
 
이 위는 pcap_lookupnet 을 위한 변수들입니다.
 
	if(pcap_findalldevs(&alldevs, errbuf) == -1){
		perror(errbuf);
		exit(1);
	}
 
	for(d=alldevs; d; d=d->next){
		if(d->description){
			printf("%s\n", d->description);
			dev = d->description;
			pcap_lookupnet(dev, &net, &mask, errbuf);
 
			net_addr.sin_addr.s_addr=net;
			mask_addr.sin_addr.s_addr=mask;
 
			printf("%s\n", inet_ntoa(net_addr.sin_addr));
			printf("%s\n", inet_ntoa(mask_addr.sin_addr));
		}
		else
			printf(" (No description available)\n");
	}
 
	system("pause");
	return 0;
}

실행 결과를 보니

네트워크 디바이스 별명은 잘 잡았더군요.

근데 네트워크 어드레스랑 넷마스크는 전부 0.0.0.0 으로 뜨네요.

윈도우에서는 제대로 작동하지 않는 건가요?

그리고 위와는 별개로 pcap_lookupdev()를 이용해서 프로그램을 짤 경우엔

디바이스를 못잡는지 디바이스 별명을 자꾸 '\' 이걸로 잡습니다.

코드에 문제가 있는지 궁금하네요.