gpt4 book ai didi

java - Android热点与客户端之间的socket连接

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:40 25 4
gpt4 key购买 nike

我正在制作一个应用程序,用于检查某些连接(查找 SSID 列表),如果找不到任何连接,则为所述连接创建一个热点。基本上它应该充当局域网。我成功创建了热点,之后它在服务器套接字上监听传入连接:

Thread socketThread = new Thread(new Runnable() {
@Override
public void run() {
int port = Constants.PORT + socketList.size()-1;
try {
ServerSocket serverSocket = null;
serverSocket = new ServerSocket(port);
Log.d(TAG, "Socket listening for connections: " + port);
Socket client = serverSocket.accept();
Log.d(TAG, "Server: connection done");
InputStream inputstream = client.getInputStream();
DataInputStream commStream = new DataInputStream(inputstream);
byte[] b = new byte[16];
while (commStream.read(b,0, 16) != -1)
Log.d(TAG, new String(b, "ASCII"));
serverSocket.close();
Log.d(TAG, "Server socket done");
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}

});
socketList.add(socketThread);
socketThread.start();

如果我创建热点并用我的电脑连接到它,我就可以使用 netcat 并与所述套接字连接:

netcat 192.168.43.1 8988

其中 192.168.43.1 是热点的默认 Android IP 地址,8988 是我正在使用的端口。但是,当我尝试通过运行该应用程序并连接到热点的另一台设备执行相同操作时,它不起作用。这是客户端代码:

clientThread = new Thread(new Runnable() {
@Override
public void run() {
int port = Constants.PORT ;
try {
Socket socket =new Socket();
socket.bind(null);
socket.connect((new InetSocketAddress("192.168.43.1", port)), 20000);
OutputStream stream = socket.getOutputStream();
DataOutputStream commStream = new DataOutputStream(stream);
commStream.write("1234567890123456".getBytes());
socket.close();
Log.d(TAG, "Client socket done");
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}

});
clientThread.start();

它甚至不连接到服务器套接字,它只是等待直到超时。我在这里做错了什么吗?

提前致谢。

最佳答案

您无法在创建热点的设备上创建 IP(192.168.43.1) 的服务器套接字。因此只需在另一台已连接到热点的设备上反转服务器套接字即可。

例如假设您已在设备 A 上创建了热点,并且设备 B 已连接到 A,因此在设备 B 上创建具有分配的本地 IP 的服务器套接字,并通过查找设备 B 的 IP 在 A 中创建 Socket 实例。

关于java - Android热点与客户端之间的socket连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37875808/

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