2
votes

I'm trying to create a small HTTP server in C# but I'm having some trouble with IPv6 clients. I have IPv6 support on my machine but when I try to create a listening socket it fails.

Log("Creating server socket on port {0}", LogType.Info, _port);
            _serversocket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
            _serversocket.Bind(new IPEndPoint(IPAddress.Any, _port));
            _serversocket.Listen(10);

What am I doing wrong here?

The code throws this exception: The system detected an invalid pointer address in attempting to use a pointer argument in a call

EDIT:

Stack Trace:

at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP) at TroutServer.Trout.Start(Int32 port) in C:\Users\Chris\Documents\Visual Studio 2008\Projects\TroutServer\trout\trout.cs:line 62

Type is SocketException

1
What is the exception's type and stack trace?SLaks

1 Answers

6
votes

Try:

new IPEndPoint(IPAddress.IPv6Any, _port)