我正在編寫一個數據包嗅探器,作爲在C#中學習.NET 4套接字開發的練習。我的目標是嗅探進出我電腦的IP數據包。不知道爲什麼我在C#嗅探器中設置套接字選項時出現錯誤代碼10022(無效參數)
我的問題是我在調用SetSocketOption時收到錯誤代碼10022,無效參數。我沒有看到我有一個無效的論點。我的電腦上有一些管理員權限,但也許我沒有足夠的權限。這是我的工作電腦和IT部門非常嚴格。這就是說,如果這是一個權限問題,我會期待一個不同的例外。
我不知道我的下一步應該調試這個問題。任何人有想法?
下面的代碼如下:
public Sniffer()
{
try
{
socket = new Socket(
AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
IPAddress[] ipAddresses = Dns.GetHostEntry(
Dns.GetHostName()).AddressList;
socket.Bind(new IPEndPoint(ipAddresses[0], 0));
socket.SetSocketOption(
SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
byte[] inputData = new byte[4] { 1, 0, 0, 0 };
byte[] outValue = new byte[4];
socket.IOControl(IOControlCode.ReceiveAll, inputData, outValue);
}
catch (SocketException ex)
{
string ErrorMessage = ex.Message;
}
}
我沒有看到IP作爲本文檔中的參數之一(?)http://msdn.microsoft.com/en-us/library/600stss7.aspx – Shoban 2011-02-28 18:27:12
您是否正在運行win7或vista?如果是這種情況,您可能只需要提升權限。 – 2011-02-28 18:27:44
Win7。任何想法如何找到我需要達到什麼水平? – Don 2011-02-28 18:30:41