为什么当wifi没有互联网连接并且移动数据打开时,IAsyncResult.AsyncWaitHandle.WaitOn



我正在尝试通过wifi连接与我的自定义设备进行同步。当我的移动数据关闭时,一切正常,但打开后将无法正常工作(因为我的自定义设备没有连接到互联网(。

这是问题发生的地方:

stateSuccess = true;
tcpclnt = new TcpClient();
IAsyncResult ar = tcpclnt.BeginConnect(ip, port, new AsyncCallback(connectCallback), stateSuccess);
int timeout = 3000;
stateSuccess = ar.AsyncWaitHandle.WaitOne(timeout, false);

当我打开移动数据stateSuccess = false时,但是当移动数据关闭时stateSuccess = true.我总是通过wifi连接到我的自定义设备。

我的连接回调是:

private void connectCallback(IAsyncResult ar)
{
var stateSuccess = (Boolean)ar.AsyncState;
try
{
tcpclnt.EndConnect(ar);
}
catch (Exception exc)
{
//handle
}
try
{
if (tcpclnt != null && tcpclnt.Connected && stateSuccess)
return;
tcpclnt.Close();
}
catch (Exception exc)
{
if (tcpclnt != null)
tcpclnt.Close();
}
}

我认为问题出在选择错误的网络的某个地方。即使 wifi 没有互联网连接,我如何强制它使用 wifi 网络?

这些设备不关心也不区分较低级别的基带无线电扫描(我们在这里谈论的是电话(,这留给实际的无线电固件来处理。

如果您不想使用无线网络,请将其关闭。但是,如果您想强制使用WIFI,只需关闭蜂窝数据即可

编辑:我刚刚找到了一种仅适用于Android的解决方法:https://stackoverflow.com/a/56590566/11104068

最新更新