关于手机上多个IP到底用哪个的问题!

手机上4G,和wifi同时开启动,但是wifi连的是内网无法访问外网,但我们的APP却要通过wifi连接设备,这种情况下手机会默认选用4g网络,于是我们的APP就无法通过wifi连接设备了,这时就要给socket添加一个bind函数,强制告诉它我们要用那个网访问设备。见参考代码:

 clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                
                clientSocket.ReceiveTimeout = 4000;
                clientSocket.SendTimeout = 4000;
                clientSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 4000);
                clientSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4000);
                //绑定本地的wifi的IP,而不是4G网卡的IP 
                string name = Dns.GetHostName();
                IPAddress[] ipadrlist = Dns.GetHostAddresses(name);
                 string strIp = "";
                for (int i = 0; i < ipadrlist.Length; i++)
                {


                    if(ipadrlist[i].ToString().IndexOf("192.168.0.")!=-1)
                    {
                        strIp = ipadrlist[i].ToString();
                    }
                     
                }   
                clientSocket.Bind(new IPEndPoint(IPAddress.Parse(strIp),0));

你可能感兴趣的