TCP用于计算机之间的通信。通过编写客户端和服务器端聊天的代码,我们对服务器端和客户端的工作步骤有了深刻的理解,这里根据大书Node.js进行了总结
TCP聊天程序需要使用Nodejs中的net模块,该模块封装了TCP,用于创建TCP服务器和客户端。
计算机网络服务器
Count:连接的客户端数量;用户:用于存储客户端用户昵称的对象。对象值是客户端的所有套接字。套接字是用于服务器和客户端之间通信的接口。Net.createServer:用于创建TCP服务器,传递的函数是连接事件的监听器。客户端连接到服务器后,会触发连接事件。传入的参数conn是net的一个实例。套接字,它既可读又可写。Conn:是回调函数的参数,每个客户端对应的conn不一样,服务器会自动识别。Conn.write:是向客户端发送数据。昵称:用户的昵称。昵称未定义时,表示客户端没有输入昵称,需要输入进行验证。如果不为空,则表示已经存储,这意味着输入的数据是对话,需要显示在其他客户端上。Conn. on ('data ',function (data) {…}):用于从客户端接收数据。
/* server . js */var net=require(' net ');var计数=0;var users={ };var server=net . createserver(function(conn){ conn . setencoding(' utf8 ');conn.write(统计“人是有联系的” n请写下你的昵称:’);计数;var昵称;conn.on('data ',function(data){ data=data . replace(/ r n/,' ');if(!昵称){ if(users[data]){ conn . write(' n昵称已被使用,再试一次: ');返回;}else {昵称=数据;用户[昵称]=conn;//每个客户端对应的conn对于(var I in users) {users [I]是不同的。write(昵称“加入romm n”);}} }else {conn.write('发件人昵称: '昵称' n ');for(用户中的var I){ if(I!=昵称){ user[I]。write(昵称' : ' data ' n ');} } } });Conn.on('close ',function () {//此处,为防止连接错误,请使用close代替endconsole.log(昵称为' client disconnected n ');计数-;删除用户[昵称];});conn.on('error ',function(err){ console . log(' connection :中的错误' err ' n ');});}).listen(3000,function () { console.log('服务器正在3000上侦听');});客户
流程。stdin。简历():流程。stdin流接受用户的键盘输入。初始化时,该可读流被挂起。调用流上的resume()方法来恢复流。Process.stdin.on ('data ',function (data) {…}):用于获取键盘输入,用client.write()发送到服务器。Stop:用于判断客户端是否正常断开。Net.createConnection:用于在服务器端创建连接,并自动向connect事件添加侦听器。侦听器不接收参数。回报是“净”。插座。
/* client . js */var net=require(' net ');var stop=falseprocess . stdin . resume();process.stdin.on('data '),function(data){ if(data . tostring()。修剪()。toLowerCase()===' stop '){ stop=true;console.log('连接停止 n ');client . end();}else{ client.write(数据);} });var client=net . createconnection(3000,function () { console.log('已连接到服务器! n ');});client.on('data ',function(data){ console . log(data . tostring());//打印服务器发送的数据});client.on('error ',function(err){ console . log(' connection :中的错误' err ' n ');});client.on('close ',function() { if(!stop) { console.log('连接已关闭');} });TCP聊天程序
以下是在git中运行并连接3个客户端的测试结果:
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。