初学者 Node.JS net.createServer 示例

Net*_*min 5 javascript sockets node.js

我是一名老 PERL 编码员,正在尝试学习 node.JS 编程。我对正在编写的用于在服务器和客户端应用程序之间创建套接字连接的代码有疑问。

下面的代码有效。但是我不知道如何接受从客户端发送到服务器的数据。

基本上我想做的很简单。客户端连接到侦听套接字的服务器,发送一些信息,服务器读取这些信息,然后将信息发送回客户端。我唯一不明白的部分是如何让服务器端读取/接受/显示从客户端发送的数据字符串。

有人可以指出我正确的方向吗?提前谢谢你的帮助。

(我很抱歉我的无知。)

这是服务器端代码:

var net = require('net');
var server = net.createServer(function(socket) {
    // confirm socket connection from client
    console.log((new Date())+'A client connected to server...');
    socket.on('data', function(data) {
        var json = JSON.parse(data.toString());
        console.log(json)
    });
    // send info to client
    socket.write('Echo from server: NODE.JS Server \r\n');
    socket.pipe(socket);
    socket.end();
    console.log('The client has disconnected...\n');
}).listen(10337, '192.168.100.1');
Run Code Online (Sandbox Code Playgroud)

这是客户端代码:

var net = require('net');

var client = new net.Socket();
client.connect(10337, '192.168.100.1', function() {
console.log('Connected');  // acknowledge socket connection
client.write('Hello, server! Love, Client.'); // send info to Server
});

client.on('data', function(data) {
console.log('Received: ' + data); // display info received from server
client.destroy(); // kill client after server's response
});

client.on('close', function() {
console.log('Connection closed');
});
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我在服务器上收到一个错误,它说从客户端发送的字符串是一个无效的令牌。这是错误消息。

undefined:1

Hello, server! Love, Client.
^
SyntaxError: Unexpected token H
at Object.parse (native)
at Socket.<anonymous> (/root/nodejs/server-example.js:7:19)
at Socket.emit (events.js:117:20)
at Socket.<anonymous> (_stream_readable.js:765:14)
at Socket.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:427:10)
at emitReadable (_stream_readable.js:423:5)
at readableAddChunk (_stream_readable.js:166:9)
at Socket.Readable.push (_stream_readable.js:128:10)
at TCP.onread (net.js:529:21)
Run Code Online (Sandbox Code Playgroud)

Net*_*min 5

我真是太傻了。我找到了我正在寻找的答案。这很简单。

这是我应该写的内容来代替 JSON 语句

    socket.on('data', function(data) {
            var string = (data.toString());
            console.log(string)
    });
Run Code Online (Sandbox Code Playgroud)


aka*_*nom 4

或处理写入套接字的 JSON 和字符串:

socket.on('data', function(data) {
    try {
       var obj = JSON.parse(data.toString())
       console.log(JSON.stringify(obj, null, 4)) 
    }
    catch(e) {
       var string = data.toString()
       console.log(string)
    }
})
Run Code Online (Sandbox Code Playgroud)