使用socket在cmd命令行聊天

author author     2022-09-23     555

关键词:

---恢复内容开始---

Socket:两个程序通过一个双向的通信连接实现数据的交换,这个链接的一端就称为Socket

特性:持久链接,双向通信

首先要有服务器与客户端两端

开一个服务器server,引用node的核心模块net

const net = require("net");
const clients = [];

const server = net.createServer();server.on("connection",(client) => {

//当一个用户连接进来是,第一步先给用户一个id
//把用户存入所有用户的这个数组中
client.id = clients.length;
clients.push(client);

//设置编码集合
client.setEncoding("utf8");
//监听用户(客户端)是否给服武器发了数据
//如果发送了数据
//服务器把数据转发给其他所有用户
     client.on("data",(data) => {
          for(var i=0; i<clients.length; i++) {
               if(clients[i]){
                 clients[i].write(data)
                 }
          }
})

//监听用户是否退出群聊
//如果退出,就移除用户
    client.on("close",() =>{
          clients[client.id] = null;
    })

//监听用户是否连接是否出错
//如果出错,就移除用户
          client.on("error",() =>{
                 clients[client.id] = null;
              })
          })


server.listen("9000","127.0.0.1");

开一个客户端,用来与服务器通信,引入核心模块net和readline

const net = require("net");
const readline = require("readline");
//创建客户端
const client = new net.Socket();

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
//连接服务器
client.connect("9000","127.0.0.1");

//服务器传来数据,做监听
client.setEncoding("utf8");
client.on("data", (data) => {
               console.log(data);
 })
//client.write("ma zheng");
//监听控制台输入的内容,发送给服务器
rl.on("line",(input) => {
       if (input === "quit") {
           rl.close();    //聊天框关闭
           client.destroy(); //如果输入quit,对话终止
      }else{
          client.write(input);
   }

})

---恢复内容结束---

socket.io 在一页上进行多个聊天

...想在一个页面上实现多个聊天窗口(例如facebook)。目前使用“房间”,简化代码:[客户]socket.emit(\'join\',\'room1\');socket.emit(\'join\',\'room2\');[服务器]socket.on(\'jo 查看详情

如何使用cmd命令行

参考技术A如何使用cmd命令行呢?其实是很简单的,下面我来教大家。01首先,我们右击电脑左下角的微软按钮;02弹出的界面,我们点击运行;03进入运行界面后,我们在输入框中输入cmd,然后点击确定;04这样就进入cmd命令行了... 查看详情

在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字

在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字呢?正确的步骤如下:1,打开cmd命令行窗口2,输入命令>chcp65001数字65001代表的是cmd窗口中utf-8格式的编码。cmd窗口默认编码为gbk,数字代码为936D:>chcp65001Activ... 查看详情

如何使用 Windows 的命令行打开提升的 cmd?

】如何使用Windows的命令行打开提升的cmd?【英文标题】:HowtoopenanelevatedcmdusingcommandlineforWindows?【发布时间】:2013-10-0613:05:23【问题描述】:如何在普通cmd上使用命令行打开提升的命令提示符?比如我用runas/username:admincmd但是打... 查看详情

在cmd命令行下关闭进程的命令

...:ntsd-cq-pn程序名字(在MS-Dos中的作用是一样的)方法二:ntsd使用以下参数杀死进程.c:>ntsd-cq-pPID只要你能提供进程的PID,那么你就可以干掉进程.法二:tskill命令这个命令与tasklist命令是相对应的吧!tasklist命令是显示有哪些 查看详情

计算机cmd命令如何使用

cmd命令简介cmd是command的缩写.即命令行。在9x系统下输入command就可以打开命令行.而在NT系统上可以输入cmd来打开,在windows2000后被cmd替代,利用CMD命令查询系统的信息或者是判断网络的好坏。cmd的运行CMD命令:开始->运行->... 查看详情

如何使用命令行(CMD)冷启动模拟器

】如何使用命令行(CMD)冷启动模拟器【英文标题】:Howtocoldbootemulatorusingcommendline(CMD)【发布时间】:2021-05-2710:40:05【问题描述】:在开发react-native时,我每次都尝试打开模拟器而不打开androidstudio。使用这行代码就可以打开模... 查看详情

在 cmd.Cmd 命令行解释器中更好地处理 KeyboardInterrupt

...einterpreter【发布时间】:2012-02-0710:56:32【问题描述】:在使用python的cmd.Cmd创建自定义CLI时,如何告诉处理程序中止当前行并给我一个新提示?这是一个最小的例子:#console_min.py#run: 查看详情

cmd命令行窗口和文件目录资源管理器快速切换

...操作方法:在cmd窗口下执行start%启动目录%。更多start命令使用方式,执行start/?查看帮助。  查看详情

是否可以从 cmd 命令行获取输入? [复制]

...:2021-08-0109:16:54【问题描述】:pythonprogram1.py这是我尝试使用cmd打开文件时输入的内容。pythonprogram1.pyC:\\Logs是否可以有一个像上面这样的输入,以便我可以在我的程序中使用该输入?输入应该在调用py 查看详情

如何使用cmd打开某应用程序命令行并在打开的应用程序中执行指定命令?

远程打开一个CMD,使用CMD打开某应用程序(命令行),我想在该应用程序命令行中输入命令,但是CMD没有返显,所有的命令输入都是在CMD中,并不在打开的应用程序命令行中。如何能实现在CMD里打开应用程序命令行并在打开的命... 查看详情

怎么在cmd命令行下进入postgresql

参考技术A?不明白,是什么平台?安装pgAdminIII试一试,很不错的工具。如果使用命令行c:\programfiles\postgresql\9.1\bin>psql--help看一下说明哦 查看详情

cmd命令行安装,删除windows证书(certgmr的简单使用)

在管理证书的时候需要用到certmgr工具。在cmd中执行certmgr会弹出证书管理的工具,但是不能用命令行去管理证书,需要额外的工具cermgr.exe:下载链接https://pan.baidu.com/s/1wnA-i0ixhSftPsMxv8OQ-Q在certmgr文件目录下执行certmr.exe****即可例:删... 查看详情

学习笔记-使用cmd命令行创建nodejs项目

使用cmd命令行创建nodejs项目1)在DOS下cd进入到你想要创建项目的路径。2)mkdirsing(创建一个sing文件夹)3)cdsing 4)npminit(初始化工程)此时需要填写一些项目信息,你可以根据情况填写,当然也可以一路回车。5)安装第三... 查看详情

phantomjs在cmd命令行显示中文乱码

cmd命令行窗口显示中文乱码,多是因为cmd命令行窗口字符编码不匹配导致。修改cmd窗口字符编码为UTF-8,命令行中执行:chcp65001切换回中文:chcp936一般情况下 命令行中执行:chcp65001后   查看详情

使用/不使用 cmd.exe 执行 Java 子进程命令行

】使用/不使用cmd.exe执行Java子进程命令行【英文标题】:Javasub-processcommandlineexecutionwith/withoutcmd.exe【发布时间】:2016-06-0516:31:52【问题描述】:我的问题包括一些关于在Windows中从Java执行子进程时使用“cmd.exe”、“/c”的问题。... 查看详情

什么是cmd

...动命令解释器Cmd.exe的新实例。如果在不含参数的情况下使用,则cmd显示WindowsXP的版本和版权信息。参考技术A命令提示符,在XP、2000、NT等系统中,在开始-运行中输入cmd可进入命令行。 参考技术B晕.这么多人没有一个回答正确.C... 查看详情

cmd-命令行窗口中文乱码(代码片段)

...curlwww.baidu.com可以看到有中文乱码的现象,这是因为默认使用的是GBK编码。另外,curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本,在win10的... 查看详情