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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

catspeake 2023-05-19 19:51:53
我絕對(duì)是 JS 和節(jié)點(diǎn)的新手。我有一個(gè)名為 SkyX Pro 的望遠(yuǎn)鏡管理軟件,它能夠在端口 3040 上運(yùn)行 TCP 服務(wù)器。我可以使用 Netcat 連接到它,并給它一個(gè)以 //* Javascript *// 開(kāi)頭的 Javascript,這有效并允許我啟動(dòng)相機(jī)和其他設(shè)備并發(fā)送拍照命令等。問(wèn)題是它需要從批處理文件運(yùn)行,這使得很難將任何信息返回到 HTML 頁(yè)面(如相機(jī)、調(diào)焦器和濾鏡輪狀態(tài)和溫度)。NC 調(diào)用看起來(lái)像“NC localhost 3040 < Javascript-file.js為了繞過(guò)瀏覽器解決本地機(jī)器安全問(wèn)題,我想從 node.js 運(yùn)行它,如果可能的話可能使用 socket.io-client,但我不知道它的正確語(yǔ)法。我已經(jīng)看到很多客戶端語(yǔ)法發(fā)送你好等,但沒(méi)有發(fā)送 javascript 并允許我可以理解的雙向連接。我試過(guò)使用: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'));但我對(duì)它的理解還不夠深入,無(wú)法解決它為什么不起作用的問(wèn)題。任何幫助都會(huì)很棒,請(qǐng)像對(duì)待需要一步一步的嬰兒一樣對(duì)待我。
查看完整描述

1 回答

?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊

我們可以假設(shè) socket-io 不適合您,因?yàn)槟鷵碛械姆?wù)器聽(tīng)起來(lái)像是典型的 tcp-socket 服務(wù)器,而不是 socket.io 服務(wù)器(需要特殊的標(biāo)頭)或 web-套接字服務(wù)器。


所以你只需要“網(wǎng)絡(luò)”庫(kù)來(lái)完成這項(xiàng)工作。


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')

  • 該腳本將:

    • 啟動(dòng)套接字客戶端

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

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

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

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

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

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



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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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