0
好吧,這是一個非常奇怪的問題。我試圖創建一個原始套接字ICMP數據包來欺騙ping請求。原始套接字編程 - 爲什麼printf()會影響數據包發送?
int s;
s = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
然後
int one; // I should initialize it as 1, but I didn't.
const int *val = &one;
setsockopt(s, IPPROTO_IP, IP_HDRINCL, val, sizeof(one));
....
事實證明,因爲我沒有一個初始化爲1,被欺騙的客戶端無法接收ping回覆。然而,當我剛剛
close(s);
前添加
unsigned char *ch = (unsigned char *)spoof;
,
事實證明,被欺騙的客戶端可以接收ping回覆。 這是爲什麼?
對不起,我還沒有提到printf()的東西。但是,當第一個問題得到一些解釋時會出現。 – user2045372
是否有可能在調試模式下運行程序?在調試模式下,大多數編譯器將未初始化的變量初始化爲默認值(取決於編譯器)。 – Patashu