I'm trying to create a socket polling server (well that's the first step anyway - end goal is a reverse proxy server).
Anyway, I'm fairly useless with C#, but I can't seem to get it to bind a port to a listening socket... It throws an exception every time I run it on the listenSock.bind(endPoint) call:
Code:
System.Net.Sockets.SocketException: An invalid argument was supplied
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at Proxy.Form1..ctor() in Blah:\Form1.cs: line 27
Code:
List<Socket> connectedClients = new List<Socket>();
public Form1() {
InitializeComponent();
IPAddress addr = IPAddress.Parse("127.0.0.1");
IPEndPoint endPoint = new IPEndPoint(addr, Globals.port);
Socket listenSock =
new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
while (true) {
try {
listenSock.Bind(endPoint);
}
catch (Exception e) {
MessageBox.Show(e.ToString());
}
listenSock.Listen(10);
if (listenSock.Poll(0, SelectMode.SelectRead))
connectedClients.Add(listenSock.Accept());
foreach (Socket sock in connectedClients) {
if (sock.Poll(0, SelectMode.SelectError))
connectedClients.Remove(sock);
else if (sock.Poll(0, SelectMode.SelectRead))
// placeholder
ParserFunction(sock);
}
}
Can anyone let me know what I'm doing wrong? :/ I've done some Google searches and from the Google hits it appears I'm doing it correctly.
Thanks!