【发布时间】:2011-10-16 06:08:03
【问题描述】:
当我在我的 Mac OS X 上运行一个用 C 编码的简单数据包嗅探器时,我根本没有输出,这是一件奇怪的事情!有人可以帮助我了解发生了什么。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void) {
int i, recv_length, sockfd;
u_char buffer[9000];
if ((sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_TCP)) == -1) {
printf("Socket failed!!\n");
return -1;
}
for(i=0; i < 3; i++) {
recv_length = recv(sockfd, buffer, 8000, 0);
printf("Got some bytes : %d\n", recv_length);
}
return 0;
}
我编译它并在我的盒子上运行它,但什么也没发生:
MacOsxBox:Desktop evariste$sudo ./simpleSniffer
感谢您的帮助。
【问题讨论】:
-
使用 libpcap 而不是直接打开原始套接字可能会更好。
标签: c macos sockets packet-sniffers sniffing