diff --git a/Shadowsocks.Net/TCPListener.cs b/Shadowsocks.Net/TCPListener.cs index 04c78e40..f92c4c4b 100644 --- a/Shadowsocks.Net/TCPListener.cs +++ b/Shadowsocks.Net/TCPListener.cs @@ -68,6 +68,7 @@ namespace Shadowsocks.Net // Create a TCP/IP socket. _tcpSocket = new Socket(_localEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _tcpSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); + _tcpSocket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false); // Bind the socket to the local endpoint and listen for incoming connections. _tcpSocket.Bind(_localEndPoint); diff --git a/Shadowsocks.Net/UDPListener.cs b/Shadowsocks.Net/UDPListener.cs index f2030632..ff8f638e 100644 --- a/Shadowsocks.Net/UDPListener.cs +++ b/Shadowsocks.Net/UDPListener.cs @@ -63,6 +63,7 @@ namespace Shadowsocks.Net // Create a TCP/IP socket. _udpSocket = new Socket(_localEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp); _udpSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); + _udpSocket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false); // Bind the socket to the local endpoint and listen for incoming connections. _udpSocket.Bind(_localEndPoint);