Re: Can't Listen to Port 80
I have another approach which works for me to sniff a network
Code:
string ip1 = @"127.0.0.1";
socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
byte[] buffer = new byte[2048];
//SocketPair socketpair = new SocketPair(socket, buffer);
//socket.Blocking = true;
socket.Bind(new IPEndPoint(IPAddress.Parse(ip1), 80));
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
byte[] IN = new byte[4] { 1, 0, 0, 0 };
byte[] OUT = new byte[4];
int ret_code = socket.IOControl(IOControlCode.ReceiveAll, IN, OUT);
ret_code = OUT[0] + OUT[1] + OUT[2] + OUT[3];
//if (ret_code != 0)
// ret_val = false;
socket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(Onreceive), null);
....
Re: Can't Listen to Port 80
Thank you for your code sample - I am testing it out now. When I get to the following line:
int ret_code = socket.IOControl(IOControlCode.ReceiveAll, IN, OUT);
I get an invalid argument (10022) socket exception. Any ideas on why that does not work?
Re: Can't Listen to Port 80
the IP is not valid ...use ipconfig and assign a valid IP....
Re: Can't Listen to Port 80
As it turns out, it was the byte[] IN array that was thei ssue - here is the correct code:
Code:
mainSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Raw, ProtocolType.IP);
//Bind the socket to the selected IP address
mainSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.7"), 80));
//Set the socket options
mainSocket.SetSocketOption(SocketOptionLevel.IP, //Applies only to IP packets
SocketOptionName.HeaderIncluded, //Set the include the header
true); //option to 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
mainSocket.IOControl(IOControlCode.ReceiveAll, //Equivalent to SIO_RCVALL constant
//of Winsock 2
byTrue,
byOut);
//Start receiving the packets asynchronously
mainSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,
new AsyncCallback(OnReceive), null);