gpt4 book ai didi

sockets - 尝试建立套接字连接时,Arduino 客户端挂起

转载 作者:行者123 更新时间:2023-12-01 03:15:43 24 4
gpt4 key购买 nike

我正在从事一个涉及本地网络中的套接字的项目——我想制作一个 Java 服务器(在 Windows 上运行的桌面应用程序),它将监听并与多个客户端建立连接——Arduino 板。

问题是,代码在尝试建立连接时卡住了。这是Java代码:

monitorThread = new Thread(() -> {
try {
System.out.println("Creating socket...");
ServerSocket server = new ServerSocket(4444);
while (true) {
System.out.println("Waiting for connection...");
Socket client = server.accept();
//NetworkManager.this.didConnect(client);
System.out.println("Did establish connection");
if (delegate != null) {
delegate.didConnect(client);
}
}
} catch (IOException exception) {
System.out.print(exception);
}
});
monitorThread.start();

和 Arduino 代码
#include <SPI.h>
#include <Ethernet.h>

IPAddress serverIp(192, 168, 1, 101);
int serverPort = 4444;

byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF
};
IPAddress ip(192, 168, 1, 178);

EthernetClient client;

void setup() {
Ethernet.begin(mac, ip);

Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

delay(1000);
// give the Ethernet shield a second to initialize:

Serial.println("connecting...");

if (client.connect(serverIp, serverPort)) {
Serial.println("connected.");
} else {
Serial.println("connection failed.");
}
}

发生的情况是这两个在尝试建立连接时都不会失败,而是挂起 - Java 服务器挂起 Socket client = server.accept(); ,但 Arduino 也挂起 - 在 client.connect(serverIp, serverPort)
运行 Java 服务器的计算机具有静态 IP (192.168.1.101)。

我了解 Java 的 server.accept()是一个阻塞调用,所以在建立连接之前它不会继续(这就是为什么它在单独的线程中运行),但令我困惑的是为什么 Arduino 也手。

即使我尝试连接到其他一些服务器 IP 和端口 - 例如 64.233.187.99 (谷歌),它仍然挂起。

我究竟做错了什么?是否有一些我没有完成的额外设置?它可能与我的网络设置有关吗?

最佳答案

请尝试以下步骤并试一试:

  • 关闭 Windows 上的防火墙(Java 服务器)
  • 从另一台连接网络的电脑检查您是否可以在端口 4444 上连接(telnet)到 192.168.1.101(即:telnet 192.168.1.101 4444)
  • 将 delay(1000) 行更改为 delay(5000) 以给 arduino ethernet shield 更多时间来初始化

  • 另请发布您的循环代码。我使用完全相同的代码将 arduino 与 java 套接字服务器通信。你的代码看起来不错;它可能是防火墙或其他东西。确保从另一台机器检查 telnet 连接。

    关于sockets - 尝试建立套接字连接时,Arduino 客户端挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48795477/

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