作者:神奇伟哥 | 来源:互联网 | 2023-06-25 16:50
我想使用Java的ServerSocket
和Socket
类将android应用程序连接到服务器。
我在客户端使用以下行连接到服务器:
var socket = new Socket(Inetaddress.getByName("192.168.1.21"),59090);
(“ 192.168.1.21”是我的计算机的IP)
现在,当我打开一个简单的Java项目文件时,它正在工作,但是当我在android项目中尝试此行并通过模拟器运行它时,它将抛出上述异常并崩溃。
有人知道为什么吗?
堆栈跟踪显示问题是抛出了NetworkOnMainThreadException。
该异常的documentation表示您无法在主线程上进行网络操作。
至于我如何看待:堆栈跟踪显示IllegalStateException是由InvocationTargetException引起的,InvocationTargetException是由NetworkOnMainThreadException引起的。
,
您需要创建AsyncTask并在AsyncTask中创建新的Socket。您不能在UI主线程内进行网络调用。