Scoket编程
创建服务器
- 创建sever.js
- 引用net工具包
- 使用net.createSever()创建一个TCP服务器,并使用net.listen()监听指定端口
var net = require('net');
// 创建一个TCP服务器,function(connection){}是给connection事件创建的监听器,当有接收到请求的时候触发
var server = net.createServer(function (connection) {
console.log('client connected');
// 当 socket 另一端发送 FIN 包时,触发该事件。
connection.on('end', function () {
console.log('客户端关闭链接');
});
// 写入数据,默认是uft8编码
connection.write('Hello World!\r\n');
// pipe()是管道流方法,把connection加到connection中
connection.pipe(connection);
});
// 监听8080端口,客户端端口需要与其一致
server.listen('8080', function () {
console.log('server is listening');
});
创建客户端
- 新建 client.js
- 引入net工具包
- 使用net.connect()创建一个新的net.Socket对象并连接到指定端口(跟服务器端口一致)
- 对data、end事件进行监听
var net = require('net');
// 返回一个新的net.Socket,并链接到指定的端口,这里是8080,端口需要与服务器保持一致
// 当socket建立的时候,将会触发‘connect’事件
var client = net.connect(
{port: 8080},
function () {
console.log('链接到服务器');
}
);
// data为net.Socket对象的事件,当接收到数据时触发
client.on('data', function (data) {
console.log(data.toString());
// 半关闭 socket。例如,它发送一个 FIN 包。可能服务器仍在发送数据。
client.end();
});
// 当 socket 另一端发送 FIN 包时,触发该事件。
client.on('end', function () {
console.log('断开与服务器的链接');
});
运行: 打开两个窗口,先在其中一个端口启动服务器 node server.js
在另一个窗口运行客户端 node client.js
问题
怎么实现在这两个窗口进行聊天呢?