gpt4 book ai didi

node.js - 使用 net nodejs 模块单击按钮连接到套接字服务器

转载 作者:行者123 更新时间:2023-12-03 12:35:11 25 4
gpt4 key购买 nike

我正在开发一个 Electron 应用程序,用于通过 TCP 控制 ESP8266 继电器。
ESP8266 在我的本地网络的 8080 端口上运行了一个 TCP 服务器。
下面的基本代码有效。 ESP8266 接受连接和打开/关闭继电器的命令也可以工作。

const electron = require('electron')
var net = require('net');

var HOST = '192.168.0.33';
var PORT = 8080;

var socket = new net.Socket();

socket.connect(PORT, HOST, function() {
console.log('CONNECTED TO: ' + HOST + ':' + PORT);
});

但是现在我想在我的 Electron 应用程序中按下一个按钮来建立这个连接“socket.connect”,这样我就可以在需要时使用输入字段来更改 IP 地址。否则 IP 地址是硬编码的。

以下代码不起作用:
const electron = require('electron')    
var net = require('net');

const turnOn = new Buffer([0xA0, 0x01, 0x00, 0xA1]);
const turnOff = new Buffer([0xA0, 0x01, 0x01, 0xA2]);

var socket = new net.Socket();

const connectBtn = document.getElementById('connectBtn');
const onBtn = document.getElementById('onBtn');
const offBtn = document.getElementById('offBtn');

connectBtn.addEventListener('click', function(event) {
console.log("clicked connect");
var ipAddress = document.getElementById('ipAddress').value;
var port = document.getElementById('port').value;
socket.connect(port, ipAddress, function() {
console.log('CONNECTED TO: ' + ipAddress + ':' + port);
});
})

换句话说。如果我将“socket.connect”放在连接按钮单击事件之外,我的应用程序将连接到 ESP8266。
如果我将“socket.connect”放在连接按钮单击事件中,则连接不会发生。

如果在运行时需要,是否有另一种更改 IP 地址的方法?

这是我正在尝试构建的应用程序的屏幕截图:
enter image description here

最佳答案

当 Socket 主机是 ip 而不是域时,我有同样的问题。也许这就是 Electron 的 bug。升级到electron3.0,修复了Socket.connect。

关于node.js - 使用 net nodejs 模块单击按钮连接到套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52338407/

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