为什么以下代码行会引发IllegalStateException?

时间:2019-12-01 20:41:12

标签: java android sockets

我想使用Java的ServerSocketSocket类将android应用程序连接到服务器。 我在客户端使用以下行连接到服务器:

var socket = new Socket(InetAddress.getByName("192.168.1.21"), 59090);

(“ 192.168.1.21”是我的计算机的IP) 现在,当我打开一个简单的Java项目文件时,它正在工作,但是当我在android项目中尝试此行并通过模拟器运行它时,它将抛出上述异常并崩溃。 the associated stack trace 有人知道为什么吗?

2 个答案:

答案 0 :(得分:1)

堆栈跟踪显示问题是抛出了NetworkOnMainThreadException。

该异常的documentation表示您无法在主线程上进行网络操作。

至于我如何看待:堆栈跟踪显示IllegalStateException是由InvocationTargetException引起的,InvocationTargetException是由NetworkOnMainThreadException引起的。

答案 1 :(得分:1)

您需要创建AsyncTask并在AsyncTask中创建新的Socket。您不能在UI主线程内进行网络调用。