C#GetHostEntry IPV6

时间:2018-03-08 14:43:08

标签: c# server client ipv6

我正在尝试构建一个客户端/服务器程序,以根据客户端输入传输某些方程的结果。我可以使用127.0.0.1让它无问题,但是因为我想将它发送给客户端,所以我无法使用它。并非所有客户端都在LAN上,并且将通过WAN进行传输。这是我的代码的信息

            IPHostEntry ipHostInfo = Dns.GetHostEntry("127.0.0.1");
            IPAddress ipAddress = ipHostInfo.AddressList[0];
            IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000);

            // Create a TCP/IP socket.  
            Socket client = new Socket(ipAddress.AddressFamily,
                SocketType.Stream, ProtocolType.Tcp);

我已经尝试过使用外部IPV4地址但是甚至无法对其进行ping操作,但我可以ping IPV6地址,而宁愿使用它。但是,当我输入我的IPV4地址时,程序根本无法连接。有什么建议吗?

EDIT 好的,所以我设法通过两台不同的局域网计算机连接它们,但是在发送一到两次局域网客户端给我这个

  

套接字连接到192.168.1.6:11000   System.Net.Sockets.SocketException(0X80004005):发送或的请求   因为套接字未连接而且不允许接收数据   (当使用sendto调用发送数据报套接字时)没有地址   在System.Net.Sockets.Socket.BeginSend(Byte []缓冲区,int32提供   offset,int32 size,Socket Flags socketFlags,AsyncCallback回调,   对象状态)在ConsoleApp1.Form1.Send(套接字客户端,字符串数据)   在(FileLocation)第111行的ConsoleApp1.Foorm1.button1_Click(对象   发送者,EventArgs e)在(FileLocation)第177行

1 个答案:

答案 0 :(得分:0)

您可以使用IPAddress.Any

侦听所有地址以解决此问题
// Create a TCP/IP socket.  
var client = new Socket(IPAddress.Any.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
client.Bind(new IPEndPoint(IPAddress.Any, 11000));