网络聊天室---node.js中net网络模块TCP服务端与客户端的使用
//1.简单创建 net服务器
// const net = require("net");
// const server = net.createServer((c)=>{
// //connection 监听器
// console.log("客户端已连接");
// c.on("end",()=>{
// console.log("客户端已断开连接");
// })
// c.write('你好\r\n');
// c.pipe(c);
// })
// server.on('error',(err)=>{
// throw err
// })
// server.listen(8000,()=>{
// console.log("服务器已启动")
// })
//2.应用套字节对象
// var server = require('net').createServer((socket) => {
// console.log('new connection');
// socket.setEncoding("UTF8");
// socket.on('data', (data) => {
// console.log('got:', data.toString());
// if (data.trim().toLowerCase() === 'quit') {
// socket.write('Bye!');
// return socket.end();
// } else {
// socket.write(data + '----我已处理过的数据!\r\n')
// }
// })
// socket.on("end", () => {
// console.log("客户端已断开连接");
// }) // }).listen(3000)
//3.从套字节输出到文件
// var ws = require("fs").createWriteStream('output.txt');
// require('net').createServer(function(socket){
// socket.pipe(ws);
// }).listen(4000)
//4.从文件通过套字节输出到客户端
// require("net").createServer(function(socket){
// var rs = require('fs').createReadStream('output.txt');
// rs.pipe(socket)
// // rs.pipe(socket,{end:false})
// }).listen(4000)
//5.TCP聊天服务器
var net = require("net");
var server = net.createServer();
var sockets = []; //1.保存所有连接
server.on('error',function(err){
throw err
}) //1.接受链接
server.on('connection',function(socket){
console.log('got a new connection');
sockets.push(socket);//2.保存
//2.从连接中读取数据
socket.setEncoding("UTF8");
socket.on('data',function(data){
console.log('got data:',data)
//广播数据 将数据广播给所有的连接
sockets.forEach(function(otherSocket){
if(otherSocket !== socket){
otherSocket.write(data);
}
})
})
})
//3.连接被关闭时,将他删除
server.on('close',function(){
console.log('Server close');
var index = sockets.indexOf(socket);
sockets.splice(index,1)
}) server.listen('4000');
启动命令:telnet 127.0.0.1 4000
参考资料:https://www.cnblogs.com/jkko123/p/10247593.html
网络聊天室---node.js中net网络模块TCP服务端与客户端的使用的更多相关文章
- node.js中net网络模块TCP服务端与客户端的使用
node.js中net模块为我们提供了TCP服务器和客户端通信的各种接口. 一.创建服务器并监听端口 const net = require('net'); //创建一个tcp服务 //参数一表示创建 ...
- node.js中ws模块创建服务端和客户端,网页WebSocket客户端
首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ...
- [Java聊天室server]实战之五 读写循环(服务端)
前言 学习不论什么一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列尽管涉及的是socket相关的知识,但学习之前,更 ...
- node.js中使用http模块创建服务器和客户端
node.js中的 http 模块提供了创建服务器和客户端的方法,http 全称是超文本传输协议,基于 tcp 之上,属于应用层协议. 一.创建http服务器 const http = require ...
- 网络编程 — Linux TCP服务端和客户端
1. 服务端 #include <stdlib.h> #include <string.h> #include <errno.h> #include <sig ...
- 网络编程 — Windows TCP服务端和客户端
1. 服务端 #include <iostream> #include <signal.h> #include <forward_list> #include &l ...
- node.js中express模块创建服务器和http模块客户端发请求
首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文 ...
- 基于Linux的TCP网络聊天室
1.实验项目名称:基于Linux的TCP网络聊天室 2.实验目的:通过TCP完成多用户群聊和私聊功能. 3.实验过程: 通过socket建立用户连接并传送用户输入的信息,分别来写客户端和服务器端,利用 ...
- php websocket-网页实时聊天之PHP实现websocket(ajax长轮询和websocket都可以时间网络聊天室)
php websocket-网页实时聊天之PHP实现websocket(ajax长轮询和websocket都可以时间网络聊天室) 一.总结 1.ajax长轮询和websocket都可以时间网络聊天室 ...
随机推荐
- 线上cpu使用率过高解决方案
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 下面我们将一步步定位问题,详尽的介绍每一步骤的相关知识. 一.通过top命令定位占用cpu高的进程 执行top命令得到 ...
- 2019/12/16学习内容摘要(Vim)
一,Vim与vi的区别 vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息. vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以 ...
- Cisdem OCRWizard for Mac 使用教程
Cisdem OCRWizard for Mac是一款macOS平台的的文件识别软件,可以对任何PDF.扫描文件或图像文件(包括名片的照片)进行OCR识别,支持超过40种语言,帮助我们提高效率.现在小 ...
- vscode 启动
code --user-data-dir /root/vscode code --user-data-dir /root/vscode
- 多项式总结(STAGE 1)
这么难的专题居然只给了这么短时间... 然而在NC的教导之下还是有一定的收获的. 必须打广告:0,1,2,3 附带一个垃圾博客:-1 按照习惯,堆砌结论而不加证明. Section1 导数: 基本形式 ...
- SpringMVC 简单限流方案设计
一.概念 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务.排队或等待.降级等处理. 常用的限流算法有两种:漏桶算法和令牌桶算法: ...
- IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路
1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...
- 使用matplotlib.pyplot中scatter()绘制散点图
1.二维散点图 二维散点图的函数原型: matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=Non ...
- In .net 4.8,calculate the time cost of serialization in BinaryFormatter,NewtonSoft.json,and System.Text.Json.JsonSerializer.Serialize
using ConsoleApp390.Model; using Newtonsoft.Json; using System; using System.Collections.Generic; us ...
- Selenium(二):选择元素的基本方法
1. 选择元素的基本方法 对于百度搜索页面,如果我们想自动化输入爱编程的小灰灰,怎么做呢? 这就是在网页中,操控界面元素. web界面自动化,要操控元素,首先需要选择界面元素 ,或者说定位界面元素 就 ...