Я пишу анализатор пакетов в качестве упражнения для изучения разработки сокетов .Net 4 на C #.Моя цель - прослушивать IP-пакеты, входящие и выходящие из моего компьютера.
Моя проблема заключается в том, что я получаю код ошибки 10022, неверный аргумент, при моем вызове SetSocketOption.Я не вижу, где у меня неверный аргумент.У меня есть несколько администраторов на моем компьютере, но, возможно, мне не хватает.Это мой рабочий компьютер, а отдел ИТ довольно строг.С учетом сказанного, если бы это была проблема с разрешениями, я бы ожидал другое исключение.
Я не уверен, каким должен быть мой следующий шаг для устранения этой проблемы.У кого-нибудь есть идеи?
Вот следующий код:
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;
}
}