网络聊天室---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都可以时间网络聊天室 ...
随机推荐
- 表单生成器(Form Builder)之mongodb表单数据查询——关联查询
这一篇接着记录一下查询相关的操作.想象一下,如果想要在一张表格中展示某些车辆的耗损和营收情况,我们该怎么处理.车辆.耗损.营收各自存储在一张表中,耗损和营收中冗余了车辆信息……我们便想到了关联查询.m ...
- 企业级堡垒机 jumpserver
环境准备 系统:CentOS 7 IP:192.168.10.101 关闭selinux 和防火墙 # CentOS $ setenforce # 可以设置配置文件永久关闭 $ systemctl s ...
- 《推送开发全面盘点当前Android后台保活方案的真实运行效果》
登录 立即注册 TCP/IP详解 资讯 动态 社区 技术精选 首页 即时通讯网›专项技术区›推送开发全面盘点当前Android后台保活方案的真实运行效果(截止2 ... 帖子 打赏 分 ...
- 日记o3o
12.17 段考超级烂,连sts都没考过,但是今晚来机房,nj发邮件的时候也给我发了,看来是可以继续学竞赛啦,很快心,也挺不开心的,毕竟以后想要跟上文化课就要很努力了,有能力但是得去花时间啊,寒假又要 ...
- 【xAsset框架】HFS 轻量级HTTP Server快速入门指南
一.引子 最近马三有幸参与开发了一个简易轻量的Unity资源管理框架 xAsset ,xasset 提供了一种使用资源路径的简单的方式来加载资源,简化了Unity项目资源打包,更新,加载,和回收的作业 ...
- linux配置LAMP(CentOS7.4 Apache2.4 PHP5.6)
1.安装Apache 这个就不手动安装了,直接上脚本执行 bash apache.sh 以下为脚本的内容: #!/bin/bashversion=`lsb_release -a|grep Releas ...
- pandas.apply()函数
1.介绍 apply函数是pandas里面所有函数中自由度最高的函数.该函数如下: DataFrame.apply(func, axis=0, broadcast=False, raw=False, ...
- Python 爬虫从入门到进阶之路(二)
上一篇文章我们对爬虫有了一个初步认识,本篇文章我们开始学习 Python 爬虫实例. 在 Python 中有很多库可以用来抓取网页,其中内置了 urllib 模块,该模块就能实现我们基本的网页爬取. ...
- 基于SpringCloud实现Shard-Jdbc的分库分表模式,数据库扩容方案
本文源码:GitHub·点这里 || GitEE·点这里 一.项目结构 1.工程结构 2.模块命名 shard-common-entity: 公共代码块 shard-open-inte: 开放接口管理 ...
- NuGet Install-Package 命令
例: Install-Package CefSharp.Wpf -Version 73.1.130 Install-Package CefSharp.Common -Version 73.1.130 ...