2011-09-21 212 views
2

我的網絡上有一臺有多個IP地址並使用多個端口的計算機。有沒有辦法打開一個接收所有這些IP地址和所有這些端口的數據的套接字,然後讓接收到的數據包含數據包頭中的IP地址以及它接收到的端口?偵聽所有內容的套接字

改爲: 如何設置可以在多個端口和IP上接收數據的套接字? 然後,一旦我收到數據,有什麼辦法知道數據來自哪裏?

+0

如果你聽特殊IP地址'0.0.0.0',套接字將綁定到所有接口。 – Sjoerd

+0

聽「多個端口」不是TCP - 也許你應該捕獲原始IP數據包。像'libpcap'這樣的庫應該是有用的。 –

回答

0
var s = array(); 
for(i = 1; i <= 65535; i++) { 
    s[i] = socket.listen_port(i); 
    fwrite('file.dat', s[i].read()."\n"); 
} 

Ofcourse in your programing language。只有這個想法。 不要忘了,如果端口已被另一個應用程序使用,你將無法讀取或寫入它 - 我認爲是這樣的...

3

只能使用一個套接字綁定到多個端口。 TCP/IP網絡棧基於一個端口==一個套接字的思想。

3

要收聽所有IP地址,只需使用INADDR_ANY。不過你仍然需要每個端口一個插座。