我试图从电子应用程序中的json文件中读取一些服务器地址和相关的端口地址,并尝试创建套接字连接以测试应用程序是否可以使用相关的端口地址连接到该服务器。但是,每当我运行该应用程序时,第一次运行它都会说所有服务器都已启动,第二次运行正确的输出,第三个错误等等。最后,我认为异步套接字方法在下一个循环的同步中存在一种情况,但无法弄清楚我该如何解决。我试图创建一个套接字数组,但是也失败了。有人可以建议我克服这种情况的方法吗?
for(i=0; i < jsondata.length; i++){
const li = document.createElement('li');
const itemText = document.createTextNode(jsondata[i]['server'] + ':' + jsondata[i]['port']);
li.appendChild(itemText);
ul.appendChild(li);
let serverAddress = jsondata[i]['server'];
let portNumber = jsondata[i]['port'];
const socket = new net.createConnection(portNumber, serverAddress);
socket.on('connect', ()=>{
console.log(serverAddress + ' connected');
socket.end();
});
socket.on('error', (err)=>{
console.log(serverAddress + ' failed');
li.style.textDecoration = 'line-through';
socket.end();
});
}
答案 0 :(得分:0)
找到了一个解决方案,为每个套接字创建了一个数组,并且可以正常工作。代码如下;
var sockets = [];
for(i=0; i < jsondata.length; i++){
const li = document.createElement('li');
const itemText = document.createTextNode(jsondata[i]['server'] + ':' + jsondata[i]['port']);
li.appendChild(itemText);
ul.appendChild(li);
let serverAddress = jsondata[i]['server'];
let portNumber = jsondata[i]['port'];
sockets[i] = new net.createConnection(portNumber, serverAddress);
sockets[i].on('connect', ()=>{
console.log(serverAddress + ' connected');
sockets[i].end();
});
sockets[i].on('error', (err)=>{
console.log(serverAddress + ' failed');
li.style.textDecoration = 'line-through';
sockets[i].end();
});
}