Node与Python之间的双向通信可以通过使用Socket实现。下面是实现代码的完整攻略:
1. 使用Node.js创建Socket Server
首先,我们使用Node.js创建一个Socket Server。在Node.js中,可以使用net
模块创建Server。
const net = require('net');
const server = net.createServer((socket) => {
console.log(`Client ${socket.remoteAddress}:${socket.remotePort} connected to server`);
// 监听客户端消息
socket.on('data', (data) => {
console.log(`Client message: ${data.toString()}`);
// 把数据发送回客户端
socket.write(data);
});
// 客户端断开连接
socket.on('end', () => {
console.log(`Client ${socket.remoteAddress}:${socket.remotePort} disconnected from server`);
});
});
server.listen(3000, () => {
console.log('Socket server listening on port 3000')
});
上面的代码会创建一个Socket Server监听3000端口。当有客户端通过Socket连接到Server时,会打印一条连接成功的消息。当客户端发来消息时,会把消息原样发送回客户端。当客户端断开连接时,会打印一条断开连接的消息。
2. 使用Python创建Socket Client并与Node.js通信
然后,我们使用Python创建一个Socket Client。在Python中,可以使用socket
模块创建Client。
import socket
host = '127.0.0.1'
port = 3000
message = b'Hello, Node.js'
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client:
client.connect((host, port))
# 发送消息
client.sendall(message)
# 接收并打印Node.js返回的消息
data = client.recv(1024)
print('Received from Node.js:', data.decode())
上面的代码会创建一个Socket Client连接到我们之前创建的Socket Server。发送一条消息给Node.js,并接收Node.js返回的消息并打印。
3. 反向通信:使用Node.js连接到Python Socket Server
接下来,我们让Node.js连接到Python创建的Socket Server。
const net = require('net');
const client = net.createConnection({ host: '127.0.0.1', port: 4000 }, () => {
console.log('Connected to Python server');
// 发送消息
client.write('Hello, Python');
});
// 监听Python Socket Server发送的消息
client.on('data', (data) => {
console.log(`Received from Python: ${data.toString()}`);
});
// Python Socket Server断开连接
client.on('end', () => {
console.log('Disconnected from Python server');
});
上面的代码会让Node.js连接到Python创建的Socket Server,当连接成功后发送一条消息给Python。监听Python发送的消息,并在Python断开连接后打印一条消息。
Python创建Socket Server的代码如下:
import socket
host = '127.0.0.1'
port = 4000
message = b'Hello, Node.js'
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server:
server.bind((host, port))
server.listen()
print(f'Python server listening on {host}:{port}')
conn, addr = server.accept()
with conn:
print(f'Connected by {addr}')
# 接收Node.js发送的消息
data = conn.recv(1024)
print('Received from Node.js:', data.decode())
# 发送消息给Node.js
conn.sendall(data)
上面的代码会创建一个Socket Server监听4000端口。当有Client连接到Socket Server时,打印一条连接成功的消息。接收Client发送的消息并打印。把接收到的消息发回给Client。
以上就是使用Node与Python双向通信的实现代码。有两个完整的示例说明:一个是Node.js作为Socket Server,Python作为Socket Client;另一个是Node.js作为Socket Client,Python作为Socket Server。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node与Python 双向通信的实现代码 - Python技术站