#python #node.js #sockets #websocket
Вопрос:
Недавно я играл с некоторыми js и python и хотел создать базовое клиентско-серверное приложение для начала, но возникли проблемы с получением данных от клиента.
client.js
const _ = require('underscore');
const async = require('async');
const net = require('net');
const readline = require('readline');
module.exports = class Client {
constructor(port) {
this._port = port;
}
run(commands, done) {
function reject(msg) {
s.destroy();
done(msg);
}
done = _.once(done);
var s = net.connect({port: this._port}),
rl = readline.createInterface({input: s}),
handshaked = false,
output = [];
s.on('error', done);
rl.on('line', line => {
if (handshaked) {
output.push(line);
return;
}
handshaked = true;
if (line !== 'hello')
return reject('Expected: hello');
s.write(commands.map(c => c 'rn').join(' '));
s.write('quitrn');
});
rl.on('close', () => done(null, output));
setTimeout(() => done('timeout'), 1000);
}
}
server.py
import socket
import sys
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 8124)
sock.bind(server_address)
sock.listen(1)
while True:
# Wait for a connection
print(sys.stderr, 'waiting for a connection')
connection, client_address = sock.accept()
try:
print(sys.stderr, 'connection from {} ', client_address)
# Receive the data in small chunks and retransmit it
while True:
data = connection.recv(1024)
if data:
print(sys.stderr, 'sending data back to the client')
connection.sendall(data)
else:
print(sys.stderr, 'no more data from {} ', client_address)
break
finally:
# Clean up the connection
connection.close()
Я пытаюсь распечатать данные, но получаю пустую строку. Сервер подключается к клиенту, но не распечатывает получаемые данные.
Комментарии:
1. Вы пробовали подключиться к «netcat» и отправлять/получать данные через это ?