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