Node即学即用第二章的那个聊天示例(代码我也贴出来了),在XP上无法做出来呢?
发布于 10 年前 作者 Alex1990 6269 次浏览 最后一次编辑是 8 年前

chat.js代码如下

var net = require('net');
var chatServer = net.createServer();

chatServer.on('connection', function(client) {
client.write('Hi\n');
client.end();
});
chatServer.listen(9000);

我先在一个CMD窗口运行node chat.js,然后用另一个CMD窗口建立telnet连接,运行以下命令

o 127.0.0.1 [9000]

然后提示我输入用户名和密码,我输入之后直接就进入了,然后就类似于刚刚打开的CMD窗口一样,没有任何信息返回,为什么呢?是我哪里操作错误了呢?

5 回复

为什么要client.end();

@Jackson 朴灵大大你何出此言呢?添加client.end()不是为了断开建立的连接吗? 我输入用户名与密码(当前登录账户)之后CMD窗口内容变成了:

*======================================================
Welcome to Microsoft Telnet Server.
*======================================================
C:\Documents and Settings\Administrator>_

为啥别人都不回答我的问题呢,是因为都没有XP系统吗?还是因为我的问题太简单?

不过我发现可以用node建立net连接嘛(我真笨),这样也达到了验证的目的,用另一个CMD窗口执行以下文件:

var net = require('net');
var client = new net.Socket();

client.connect(9000, '127.0.0.1');

client.setEncoding('utf8');
client.on('data', function(data) {
    console.log(data);
});

交互过程其实是一样的,各种系统的telnet实现有所差异,只是结果没正常显示而已。可以用wireshark抓包验证。

我的意思是你服务端先不要急着断开,看看会如何

我试过去掉client.end,不管用

回到顶部