网络聊天室---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都可以时间网络聊天室 ...
随机推荐
- Linux系统学习 九、日志、命令、身份鉴别、目录、文件查看、控制台终端、文件属性
一.配置静态IP地址 输入ifconfig后没有配置IP地址,接下来进行手动配置. 输入以下命令进入IP配置文件进行配置 原始内容 进入vi后,输入i进入编辑状态,编辑完成后,按esc键退出编辑状 ...
- 如何解决Sublime text3文件名称中文乱码问题
在sublime text 3中,Preference, Settings-User,最后加上一行 "dpi_scale": 1.0 { "auto_complete_t ...
- Java之DateFormat类
DateFormat类概述 java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进 ...
- gitlab-CI作业-yml
stages: - build - deploy before_script: - echo "Restore NuGet Packages..." - echo "do ...
- Umi + Dva + Antd的React项目实践
记录一下最近项目所用到的技术React + Dva + Antd + umi ,以免忘记.之前没有用过它们其中一个,也是慢慢摸索,了解数据整个流程. 先了解下概念 React 不多说,3大框架之一: ...
- 线程池API总结
1.Executor:线程池顶级接口,只有一个方法 2.ExecutorService:真正的线程池接口 1) void execute(Runnable command) :执行任务/命令,没有返回 ...
- Python 爬虫从入门到进阶之路(四)
之前的文章我们做了一个简单的例子爬取了百度首页的 html,我们用到的是 urlopen 来打开请求,它是一个特殊的opener(也就是模块帮我们构建好的).但是基本的 urlopen() 方法不支持 ...
- SSH框架之Struts2第二篇
1.2 知识点 1.2.1 Struts2的Servlet的API的访问 1.2.1.1 方式一 : 通过ActionContext实现 页面: <h1>Servlet的API的访问方式一 ...
- JAVA学习第二步,初级知识框架梳理
回顾往期的学习,才发现已经学习了这么多知识点.这里复制了其他创作者的一些梳理结合自己的梳理.总结了自己在Java学习入门阶段的知识点.笔记自己了也写了详细的两本 第一章 Java面向对象 1-1包的定 ...
- docker tomcat8 mysql8部署常见错误
出现docker: out of memory bug ,内存溢出 解决方法: free -mh 应该看一下内存 内存优化/买内存 出现java.util.zip.ZipException: erro ...