第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何連接到 TCP 服務(wù)器并將 Javascript 傳遞給它

如何連接到 TCP 服務(wù)器并將 Javascript 傳遞給它

catspeake 2023-05-19 19:51:53
我絕對是 JS 和節(jié)點的新手。我有一個名為 SkyX Pro 的望遠鏡管理軟件,它能夠在端口 3040 上運行 TCP 服務(wù)器。我可以使用 Netcat 連接到它,并給它一個以 //* Javascript *// 開頭的 Javascript,這有效并允許我啟動相機和其他設(shè)備并發(fā)送拍照命令等。問題是它需要從批處理文件運行,這使得很難將任何信息返回到 HTML 頁面(如相機、調(diào)焦器和濾鏡輪狀態(tài)和溫度)。NC 調(diào)用看起來像“NC localhost 3040 < Javascript-file.js為了繞過瀏覽器解決本地機器安全問題,我想從 node.js 運行它,如果可能的話可能使用 socket.io-client,但我不知道它的正確語法。我已經(jīng)看到很多客戶端語法發(fā)送你好等,但沒有發(fā)送 javascript 并允許我可以理解的雙向連接。我試過使用:var socket = io.connect('http://localhost');`enter code here`socket.on('httpServer', function (data) {console.log(data);document.write(data + "\r\n");socket.emit('tcp', "For TCP");});const net = require('net');const client = new net.Socket();client.connect({ port: 3040, host: process.argv[2] });client.on('data', (data) => {console.log(data.toString('utf-8'));但我對它的理解還不夠深入,無法解決它為什么不起作用的問題。任何幫助都會很棒,請像對待需要一步一步的嬰兒一樣對待我。
查看完整描述

1 回答

?
慕斯709654

TA貢獻1840條經(jīng)驗 獲得超5個贊

我們可以假設(shè) socket-io 不適合您,因為您擁有的服務(wù)器聽起來像是典型的 tcp-socket 服務(wù)器,而不是 socket.io 服務(wù)器(需要特殊的標頭)或 web-套接字服務(wù)器。


所以你只需要“網(wǎng)絡(luò)”庫來完成這項工作。


const net = require('net');


// module to send a message to TCP-socket server and wait for the response from socket-server

const sendAndReceive = async (client, message) => {


? client.write(message);


? let response = null

? await ( new Promise( (resolve, reject) => {

? ? client.on('data', function(data) {

? ? ? response = data;

? ? ? resolve()

? ? });

? }))


? return response;


}


// send a single message to the socket-server and print the response

const sendJSCode = (message) => {


? // create socket-client

? const client = new net.Socket();

? client.connect(3040, 'localhost', async function() {

? ? console.log('Connected');


? ? // send message and receive response

? ? const response = await sendAndReceive(client, message)


? ? // parse and print repsonse string

? ? const stringifiedResponse = Buffer.from(response).toString()

? ? console.log('from server: ', stringifiedResponse)


? ? // clean up connection

? ? client.destroy()


? });



}


sendJSCode('var Out; \n Out="TheSky Build=" + Application.build \n\r')

  • 該腳本將:

    • 啟動套接字客戶端

    • 連接成功,客戶端發(fā)送消息

    • 客戶端收到來自該消息的回復(fù)

    • 客戶端打印對終端的響應(yīng)

  • 請注意,TheSkyX 對每條消息有 4096 字節(jié)的限制,超過這個限制,我們將需要對消息進行分塊。所以你可能希望保持 js 代碼簡短和精確。

  • 我給出的那個片段是最小的,它不處理來自服務(wù)器的錯誤。如果你愿意,你可以添加client.on("error", .. )來處理它。

  • 您直接從瀏覽器連接到套接字服務(wù)器的觀點非常有趣,不幸的是,出于安全考慮,現(xiàn)代瀏覽器本身不允許這樣做



查看完整回答
反對 回復(fù) 2023-05-19
  • 1 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號