-
March 8th, 2010, 03:11 PM
#1
Can't Listen to Port 80
I am attempting to create a socket listener in a Windows application using a System.Net.Sockets.Socket but I could not bind to port 80 on my Windows 7 machine, I could bind to any other port without issue but attempting to bind to 80 always resulted in:
an attempt was made to access a socket in a way forbidden by its access permissions
I discovered that IIS running locally locked up port 80 and that I had to move IIS to another port - you can read how to d os by going to http://www.ultimateproxylist.com/ChangingIIS.aspx
The problem I still have - even after moving IIS off of Port 80 - is that no listener is actually working. I even grabbed the following code sample directly off the MSDN site and even IT does not work! I am on a Windows 7 machine - any ideas?!?
if (!HttpListener.IsSupported)
{
Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
return;
}
// Create a listener.
HttpListener listener = new HttpListener();
// Add the prefixes.
listener.Prefixes.Add("http://*:80/");
listener.Start();
Console.WriteLine("Listening...");
// Note: The GetContext method blocks while waiting for a request.
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
// Obtain a response object.
HttpListenerResponse response = context.Response;
// Construct a response.
string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
// Get a response stream and write the response to it.
response.ContentLength64 = buffer.Length;
System.IO.Stream output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
// You must close the output stream.
output.Close();
listener.Stop();
-
March 9th, 2010, 06:24 AM
#2
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);
....
-
March 9th, 2010, 08:37 AM
#3
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?
-
March 10th, 2010, 03:13 AM
#4
Re: Can't Listen to Port 80
the IP is not valid ...use ipconfig and assign a valid IP....
-
March 10th, 2010, 07:56 AM
#5
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);
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|