[英]Prism + Xamarin.Forms Project error after closing app on Android?
[英]Unable to open ESP32 socket from Xamarin.Forms app after upgrading to Android 9
将手机更新为Android 9后,无法从Xamarin.Forms应用程序打开正在ESP32上的3000端口监听的TCP套接字。在Android 8上,此方法有效,但更新套接字后无法打开。
应用程序抛出以下异常:
System.InvalidOperationException: The operation is not allowed on non-connected sockets.
我已经尝试了一些方法来解决此问题:
以上所有工作均有效,但尝试从xamarin Forms应用程序打开ESP32上的TCP套接字无效。
我也尝试过
对于Xamarin.Forms应用程序,使用此代码
var client = new TcpClient();
var result = client.BeginConnect("192.168.1.1", 3000, null, null);
var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(1));
try
{
NetworkStream nwStream = client.GetStream();
byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes(message);
nwStream.Write(bytesToSend, 0, bytesToSend.Length);
}
catch (Exception e)
{
Console.WriteLine(e);
}
client.EndConnect(result);
在侦听器方面,我将其用于侦听:
client_socket = accept(soc, (struct sockaddr *)&remote_addr, &socklen);
read(client_socket, recv_buf, sizeof(recv_buf));
似乎Android无法打开ESP32上的套接字,问题是为什么?
升级到Android 9时,我也遇到了套接字连接问题。我有ionic-cordova和Xamarin表单应用程序,尝试在本地wifi(托管在树莓派)上进行基本的tcp套接字连接
这一切都在以前的android版本上运行,并且从笔记本电脑上都可以,但是我在android pie中超时了。
事实证明,由于我的Raspberry没有Internet连接,因此当尝试通过IP打开套接字时,Android 9并未使用wlan网络,而是试图使用其4G连接到Internet并失败了。 我关闭4G后,它设法连接到Rasp。
我在Xamarin中打开连接的简单代码示例:
private TcpClient m_client;
async public void connect(string address, int port)
{
if(m_client.Connected)
{
m_client.Close();
}
try
{
await m_client.ConnectAsync(address, port);
}catch(Exception e)
{
Console.WriteLine($"error while connecting: {e.Message}");
}
Console.WriteLine($"is connected : {m_client.Connected}");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.