[英]How to send multiple pieces of data on same telnet connection?
一個電子應用程序,該應用程序使用ipcMain和ipcRenderer進程通過單擊按鈕發送telnet命令以及npm telnet- 客戶端庫,用於在桌面應用程序和遠程設備(服務器)之間進行Telnet連接。 我是新來的諾言,所以無法找出正確的實施方案。
問題:每次單擊一個按鈕,都會建立一個新的Telnet會話,並且在並發20個會話后,我的遠程設備無響應。 為了克服這個問題,我在Telnet連接上完成connection.exec()之后添加了connection.end(),它通過在發送命令后關閉連接來改善功能,但同時也增加了延遲。 但是,我也意識到這並非一直有效,並且會間歇性地跳過以保持連接狀態。
問題:如何檢查Telnet會話是否已經建立,然后通過現有會話發送命令,而不是每次都創建新會話並在顯式關閉它之后運行。
server.html
<script>
const {ipcRenderer} = require('electron')
function sendCommand(channel, arg){
ipcRenderer.send(channel, arg)
}
</script>
<button onclick="sendCommand('channel-1', 'command1');"> Command 1 </button>
<button onclick="sendCommand('channel-1', 'command2');"> Command 2 </button>
main.js
const {ipcMain} = require('electron')
var Telnet = require('telnet-client')
var connection = new Telnet()
ipcMain.on('channel-1', (event, arg) => {
var params = {
host: '192.168.1.121',
port: 23,
shellPrompt: ' ',
timeout: 1500,
}
var cmd = arg
connection.on('ready', function(prompt) {
connection.exec(cmd, function(err, response) {
console.log(response)
})
})
connection.on('timeout', function() {
console.log('socket timeout!')
connection.end()
})
connection.on('close', function() {
console.log('connection closed')
})
connection.connect(params)
})
提前致謝。
以下修改幫助我通過現有telnet通道發送命令,而無需創建多個telnet會話,現在發送telnet命令的速度很快。
var params = {
host: '192.168.1.121',
port: 23,
shellPrompt: ' ',
timeout: 1500,
// removeEcho: 4
}
connection.connect(params)
var cmd = "a temp command"
connection.on('ready', function(prompt) {
connection.exec(cmd, function(err, response) {
console.log(response)
})
})
connection.on('timeout', function() {
console.log('socket timeout!')
connection.end()
})
connection.on('close', function() {
console.log('connection closed')
})
ipcMain.on('channel-1', (event, arg) => {
cmd = arg
if(connection.getSocket().writable){
connection.exec(cmd, function(err, response) {
console.log(response)
})
}else{
console.log("connection closed!" + connection.getSocket().writable)
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.