TCP服务器端,看名字也知道是建立在服务器上面的
//获取模块
const net =require('net');
//创建server服务器
const server=net.createServer();
//与客户端建立连接
server.on('connection',function(socket){console.log('客户端与服务器连接已经建立');//socket是客户端连接服务器端的对象,下面都是他的事件加方法//客户端返回数据触发data事件socket.on('data',function(data){//接收数据,因为数据都是二进制的buffer对象,所以得转换为我们能阅读的字符console.log('已接收到客户端发送的数据%s',data.toString('utf8'));//利用write()方法给客户端发送信息,并返回了data数据,这个data数据和客户端的数据是一样,只是把他原路返回socket.write('确认数据,并返回:'+data);});//发生错误的处理socket.on('error',function(err){if(err){console.log('与客户端通信过程过发生错误'+err.code);//销毁socket对象,避免被利用socket.destroy();}});//socket的end事件,这个事件是监控服务端的end()方法的socket.on('end',function(){console.log('客户端连接被关闭');//socket.end();//关闭与客户端的连接用的,必须是{allowHalfOpen:true}时//关闭这个应用程序,是server不是socket不要写错了server.unref();});//socket端彻底关闭时触发close事件,当handle_err为true时是错误关闭,当为false是则是正常关闭socket.on('close',function(handle_err){if(handle_err){console.log('由于一个错误导致socket端口被关闭');server.unref();return;}console.log('sokcet端口正常关闭');});
//返回server端的连接数,当大于或等于2时则关闭服务器连接server.getConnections(function(err,count){if(count===2){server.close();}})
})
//连接主机和端口
server.listen(8431,'localhost');
//触发关闭事件
server.on('close',function(){console.log('TCP服务器被关闭');
})
//下面是客户端,也是放在机子上的,比如VPS
//获取net模块
const net =require('net');
//创建客户端
const client=new net.Socket();
//设置编码
client.setEncoding='utf8';
//与服务器进行连接
client.connect(8431,'localhost',function(){console.log('已连接到服务器');//向服务器端发送信息client.write('你好');//隔10秒后再追加数据setTimeout(function(){client.end('goodbye');},10000);
});
//接收到服务器端的数据
client.on('data',function(data){console.log('已接收服务器端发送的数据');console.log(data.toString('utf8'));
});
//连接出错时,输出错误码err.code
client.on('error',function(err){console.log('与服务器连接过程中发生错误'+err.code);//客户端销毁应用程序client.destroy();
})