好的,所以我正在做一些看起来应该很容易的事情。我基本上是在尝试打开一个 ServerSocket 连接,然后等待客户端连接。
这是我的代码。
ServerSocket serverSocket = new ServerSocket(6543);
Socket clientSocket = serverSocket.accept();
每当我的代码命中 serverSocket.accept(); 时,我都会抛出以下异常。
bind failed: EADDRINUSE (Address already in use)
所以很明显我的下一步是检查另一个端口是否可以工作,但它没有。接下来我重新启动设备并尝试运行该应用程序,我得到了同样的异常。我已授予我的应用程序 INTERNET 权限,并且设备已植根。
这是我显示的网络接口。
lo: ::1%1
lo: 127.0.0.1
eth0: //IPV6 address
eth0: 192.168.1.127
编辑 1
这是我在调试时得到的 serverSocket 对象信息。
ServerSocket[addr=192.168.1.121/192.168.1.121,port=0,localport=1234]
编辑 2
我的 ServerSocket 中有以下可用的构造函数
new ServerSocket(int port)
new ServerSocket(int port, int backlog)
new ServerSocket(int port, int backlog, InetAddress localAddress)
我尝试使用第三个构造函数和相同的异常。
new ServerSocket(4567, 0, InetAddress.getLocalHost());