2010-10-25 2 views
1

На следующий кодPacket исключение перехватчик гнездо

 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP); 
     s.Bind(new System.Net.IPEndPoint(IPAddress.Parse("127.0.0.1"),0)); 
     s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true); 
     byte[] bin = new byte[4]{1, 0, 0, 0}; 
     byte[] bout = new byte[4]; 
     s.IOControl(IOControlCode.ReceiveAll, bin, bout); 

я получаю следующее исключение:

Socket Exception: An invalid argument was supplied 

На следующей строке

 s.IOControl(IOControlCode.ReceiveAll, in, out); 

Но я не понимаю, почему я поставил неправильный аргумент.

+0

Строка, в которой вы утверждаете, что ошибка возникает, не существует в предоставленном коде. Я предполагаю, что мода должна была заставить его работать, потому что 'out' зарезервирован. Пожалуйста, обновите свой вопрос. – spender

+0

TY, я редактировал его. –

+0

Скомпилирует ли это переменное имя 'out'? Если это так, я удивлен, потому что это зарезервированное ключевое слово. http://msdn.microsoft.com/en-us/library/x53a06bb%28VS.71%29.aspx – spender

ответ

2

Хорошо, я нашел его.

127.0.0.1 не является надлежащей аннотацией IP-адреса для этого. Я должен использовать свой локальный (192.168.0.100);

Darn, это всегда так просто.

1

Смотрите MSDN article и IOControl док, специально для .ReceiveAll:

Включение приема всех пакетов IPv4 на сети. Розетка должна иметь адресное семейство адресов InterNetwork, тип сокета должен быть необработанным, а тип протокола должен быть IP. Текущий пользователь должен принадлежать группе администраторов на локальном компьютере, а сокет должен быть привязан к определенному порту . Этот управляющий код поддерживается в Windows 2000 и более поздних версиях . Это значение равно константе Winsock 2 SIO_RCVALL .Winsock 2 SIO_RCVALL.

Возможно ли, что вы не в группе «Администраторы», или вы связаны с неправильным портом? Кажется, вы правильно установили другие параметры. Хотя, сказав все это, ваш код выглядит идентично this example, чтобы он работал? Можете ли вы копать дальше в исключение, чтобы читать, возможно, более подробные внутренние исключения?

+0

Хейя, я уверен, что я в группе администратора. Я даже добавил следующий манифест: И нет внутренних внутренних исключений. И я также запускаю VS в администраторе –

 Смежные вопросы

  • Нет связанных вопросов^_^