node.js使用net模块创建服务器和客户端示例【基于TCP协议】


Posted in Javascript onFebruary 14, 2020

本文实例讲述了node.js使用net模块创建服务器和客户端。分享给大家供大家参考,具体如下:

node.js中net模块创建服务器和客户端

1.node.js中net模块创建服务器(net.createServer)

// 将net模块 引入进来
var net = require("net");
// 创建一个net.Server用来监听,当连接进来的时候,就会调用我们的函数
// client_sock,就是我们的与客户端通讯建立连接配对的socket
// client_sock 就是与客户端通讯的net.Socket
var server = net.createServer(function(client_sock) {
 console.log("client comming", client_sock.remoteAddress, client_sock.remotePort);
 // 设置你接受的格式,
 // client_sock.setEncoding("utf8");
 // client_sock.setEncoding("hex"); // 转成二进制的文本编码
 //
 // 客户端断开连接的时候处理,用户断线离开了
 client_sock.on("close", function() {
 console.log("close socket");
 });
 // 接收到客户端的数据,调用这个函数
 // data 默认是Buffer对象,如果你强制设置为utf8,那么底层会先转换成utf8的字符串,传给你
 // hex 底层会把这个Buffer对象转成二进制字符串传给你
 // 如果你没有设置任何编码 <Buffer 48 65 6c 6c 6f 57 6f 72 6c 64 21>
 // utf8 --> HelloWorld!!!  hex--> "48656c6c6f576f726c6421"
 client_sock.on("data", function(data) {
 console.log(data);
 client_sock.write("goodbye!!!");
 client_sock.end(); // 正常关闭
 });
 client_sock.on("error", function(err) {
 console.log("error", err);
 });
});
// 当我开始监听的时候就会调用这个回掉函数
server.on("listening", function() {
 console.log("start listening...");
});
// 监听发生错误的时候调用
server.on("error", function() {
 console.log("listen error");
});
server.on("close", function() {
 console.log("server stop listener");
});
/*
server.on("connection", function(client_sock) {
 console.log("client comming 22222");
});
*/
// 编写代码,指示这个server监听到哪个端口上面。
// 127.0.0.1: 6080
// node就会来监听我们的server,等待连接接入
server.listen({
 port: 6080,
 host: "127.0.0.1",
 exclusive: true,
});
// 停止node对server的监听事件处理,那么node就没有其他的事件要处理,所以就退出了。
// server.unref(); // 取消node,对server的事件的监听;
// server.close(); // 主动的掉这个server.close才会触发这个net.Server的close事件

2.node.js中net模块创建客户端(net.connect())

var net = require("net");
// net.Socket,
var sock = net.connect({
 port: 6080,
 host: "127.0.0.1",
}, function() {
 console.log('connected to server!');
});
// 连接成功调用的事件
sock.on("connect",function() {
 console.log("connect success");
 // 在这里我们就可以发送数据了
 sock.write("HelloWorld!", "utf8");
 // end
});
// end
// 有错误发生调用的事件
sock.on("error", function(e) {
 console.log("error", e);
});
// socket关闭的事件
sock.on("close", function() {
 console.log("close");
});
// 对方发送了关闭数据包过来的事件
sock.on("end", function() {
 console.log("end event");
});
// 当有数据发生的时候,调用;
sock.on("data", function(data) {
 console.log(data);
});

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
原生javascript实现图片轮播效果代码
Sep 03 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 Javascript
jquery事件重复绑定的快速解决方法
Jan 03 Javascript
js或jquery实现页面打印可局部打印
Mar 27 Javascript
Javascript实现的简单右键菜单类
Sep 23 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
Jul 21 Javascript
jquery日历插件e-calendar升级版
Nov 10 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
Dec 08 Javascript
js实现鼠标单击Tab表单切换效果
May 16 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
Sep 11 Javascript
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
JavaScript利用html5新方法操作元素类名详解
Nov 27 Javascript
node事件循环和process模块实例分析
Feb 14 #Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 #Javascript
JavaScript简单编程实例学习
Feb 14 #Javascript
JS实现打砖块游戏
Feb 14 #Javascript
从零使用TypeScript开发项目打包发布到npm
Feb 14 #Javascript
JavaScript中的this原理及6种常见使用场景详解
Feb 14 #Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 #Javascript
You might like
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
php 发送带附件邮件示例
2014/01/23 PHP
php统计文章排行示例
2014/03/04 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
PHP7新功能总结
2019/04/14 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
Python Django 命名空间模式的实现
2019/08/09 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
纽约海:Sea New York
2018/11/04 全球购物
老师的检讨书
2014/02/23 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
模范教师事迹材料
2014/12/16 职场文书
追讨欠款律师函
2015/06/24 职场文书