Я пытаюсь открыть сокет, который будет принимать все пакеты, отправленные на устройство Windows Mobile через сеть Active Sync.
Я использую код из: CS Network Sniffer для Windows
В частности:
//For sniffing the socket to capture the packets has to be a raw socket, with the
//address family being of type internetwork, and protocol being IP
mainSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Raw, ProtocolType.IP);
//Bind the socket to All Network Communication
mainSocket.Bind(new IPEndPoint(IPAddress.Parse("169.254.2.1"), 0));
Я привязываюсь конкретно к настройке IP через Active Sync
И следующие параметры сокетов недоступны в Windows Mobile, есть ли другие варианты, которые можно использовать в Windows Mobile, чтобы получить тот же эффект? Список, который я видел в MSDN, мало чем помогает - msdn.microsoft.com/en-us/library/aa926870.aspx
//Set the socket options
mainSocket.SetSocketOption(SocketOptionLevel.IP, //Applies only to IPv4 packets
SocketOptionName.HeaderIncluded,
true);
byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
byte[] byOut = new byte[4] { 1, 0, 0, 0 }; //Capture outgoing packets
//Socket.IOControl is analogous to the WSAIoctl method of Winsock 2
//IOControlCode.ReceiveAll is equivalent to SIO_RCVALL constant of Winsock 2
mainSocket.IOControl(IOControlCode.ReceiveAll, byTrue, byOut);
Наконец код для получения:
//Start receiving the packets asynchronously
mainSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,
new AsyncCallback(OnReceive), null);
Опять же, моя цель - получать все входящие пакеты на все порты для TCP и UDP на моем устройстве Windows Mobile через сеть Active Sync.
Любая помощь, совет или код приветствуются, C #, VB.net, C ++ все хорошо :)