11、net模块
案例一:简单的socket连接
const net = require('net');
const server = net.createServer((client) => {
console.log('客户端已连接');
client.on('end', () => {
console.log('客户端已断开连接');
});
client.write('你好\r\n');
client.pipe(client);
});
server.on('error', (err) => {
throw err;
});
server.listen(8124, () => {
console.log('服务器已启动');
});
const net = require('net');
const client = net.connect({port:8124},() => {
console.log("客户端已连接!");
client.write("world!\r\n");
});
client.on("data",(data) => {
console.log(data.toString());
});
案例二:多客户端连接一服务器端实现信息交流
const net = require('net');
const clientSet = new Set();
const server = net.createServer((client) => {
console.log(client.remoteAddress+'客户端已连接');
clientSet.add(client);
client.on('end', () => {
clientSet.delete(client);
console.log('客户端已断开连接');
});
client.on('data', (data) => {
for(let cs of clientSet){
cs.write(client.remoteAddress+":"+data.toString())
}
});
});
server.on('error', (err) => {
console.log("error!")
});
server.listen(8124, () => {
console.log('服务器已启动');
});
const net = require('net');
const hostname = process.argv[2];
const port = process.argv[3];
const client = net.connect({host:hostname,port:port},() => {
console.log("客户端已连接!");
process.stdin.setEncoding('utf8');
process.stdin.on('readable', () => {
let chunk;
while ((chunk = process.stdin.read()) !== null) {
if(chunk == "q\r\n"){
console.log("exit!");
process.exit();
}
client.write(chunk);
}
});
});
client.on("data",(data) => {
console.log(data.toString());
});
client.on("end",(data) => {
console.log("客户端已断开连接");
});