1

問題があります。「IF」条件の部分で、メッセージ「socket.write('11')」を送信する必要がありますが、2 番目の「socket.write」がオンでない場合、メッセージは送信されません。コード。私のコードでは、2 回目の書き込みは必要ありません。なぜそれが起こったのですか?

** 他のエラーが見つかりました。var "data" を socket.write() に配置しないと、クライアントにメッセージが送信されません。

よろしく

var net = require('net');
var HOST = '192.168.0.104';
var PORT = 6060;
var connections = 0;

var clients = [];

net.createServer(function (socket) {

// Identify this client
socket.name = socket.remoteAddress + ":" + socket.remotePort

// Put this new client in the list
clients.push(socket);

// Send a nice welcome message and announce
socket.write("Welcome Client: " + socket.name + "\n");
connections++;
console.log('Active connections: ' + connections);
console.log(socket.name + " joined the chat.");

// Handle incoming messages from clients.
socket.on('data', function (data) {
var response = data.toString();
var recv = response.length;

if (recv == 16){
socket.write('11'); //****** First write
console.log("11");
}

console.log(socket.name + "length: " + recv);

socket.write('You said: "' + data); //***** Second write

});


// Remove the client from the list when it leaves
socket.on('end', function () {
clients.splice(clients.indexOf(socket), 1);
console.log(socket.name + " left the chat.");
connections--;
console.log('Active connections: ' + connections);
});

}).listen(PORT, HOST);

 // Put a friendly message on the terminal of the server.
console.log('Server listening on ' + HOST +':'+ PORT);
4

1 に答える 1

2

方法を確認してくださいsocket.setNoDelay

さらに、 の戻り値を使用してsocket.write、データがネットワークに送信されたかどうかを検出できます。

于 2012-08-02T11:46:42.893 に答える