gpt4 book ai didi

android - 如何在我的 android 应用程序中打开 ServerSocket?

转载 作者:太空狗 更新时间:2023-10-29 14:25:39 26 4
gpt4 key购买 nike

好吧,我正在做一些看起来应该很容易的事情。我基本上是在尝试打开一个 ServerSocket 连接,然后等待客户端连接。

这是我的代码。

ServerSocket serverSocket = new ServerSocket(6543);
Socket clientSocket = serverSocket.accept();

每当我的代码命中 serverSocket.accept(); 时,我都会抛出以下异常。

bind failed: EADDRINUSE (Address already in use)

很明显,我的下一步是检查另一个端口是否可以工作,但没有。接下来我重新启动设备并尝试运行该应用程序,但我遇到了同样的异常。我已经授予我的应用程序 INTERNET 权限并且该设备已 Root 。

这是我显示的网络接口(interface)。

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());

最佳答案

好吧,我终于弄清楚了为什么我的应用程序会抛出异常,以及是否有人对此有任何反馈或想提供一个关于为什么会发生这种情况的答案。我将不胜感激。

因此,在我创建的线程中,我需要回发到主线程以根据服务器连接发生的情况更新一些 TextView。好吧,因为我无法从我自己创建的线程更新主线程,所以我需要向该线程添加一个 Handler 对象以更新 UI。完全删除该处理程序允许我的应用程序成功创建 ServerSocket 而不会引发异常。

Handler 是否以某种方式事先运行了代码或者这里发生了什么?

代码。

RemoteServerRunnable test = new RemoteServerRunnable();
Handler handler = new Handler();
handler.post(test);
test.start();

关于android - 如何在我的 android 应用程序中打开 ServerSocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com