javascript - 在 JavaScript 中发送简单的 TCP 消息,类似于 Python .socket
问题描述
来自 Python,我正在尝试使用JavaScript
and来实现类似的结果node.js
。
我正在尝试通过网络发送一个简单的 TCP 消息。在Python
中,我将通过以下方式实现此目的:
import socket
device_ip = '192.168.0.10'
device_port = 20000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
s.connect((device_ip, device_port))
command = ('Message to be sent to device here')
s.sendall(command.encode())
s.recv(4096)
我查看了 node 的socket.io
模块,但在Python
.
device_ip
只要消息是 TCP 编码的,最后的设备就会响应消息,然后它只会发回Ack
JS 可以有效忽略的消息。在发送另一条消息之前,这些Ack
消息仅作为简单的握手存在。我的Python
代码可以按需要运行,但我发现自己需要使用JS
and运行它Node
。
解决方案
Node 提供了Net
-模块,它基本上允许您创建 tcp-server 和客户端套接字。这是一个非常简单的服务器套接字示例:
const net = require('net');
const server = net.createServer((c) => {
console.log('client connected');
c.on('end', () => {
console.log('client disconnected');
});
c.write('hello\r\n');
c.pipe(c);
});
server.listen(20000, () => {
console.log('server socket listening ...');
});
这是相应客户端套接字的代码:
const net = require('net');
const client = net.createConnection({ port: 20000}, () => {
client.write('world!\r\n');
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
推荐阅读
- java - 我必须检查数组的元素是否与前一个元素相同(java)
- java - 在运行时动态添加新的 AOP Advisor,表达式来自 Spring Framework 中的 rest 端点
- deployment - 无法部署带有“无效或意外令牌”错误的可靠智能合约
- linux - Yocto - 添加树内核模块
- flutter - 如何使用状态栏和导航栏在全屏上显示对话框背景颜色
- python - 调用使用 StringVar() 重构的现有变量(列表)
- wordpress - Kubernetes Mariadb 服务无法访问
- excel - 你可以创建一个 PDF 并有一个目标路径,如下所示?
- swiftui - SwiftUI/Combine 发布者是双向的吗?
- python - 对 QTableWidget 和 QListWidget 使用相同的子类覆盖方法