net模块的组成部分

下面整理出了整个net模块的知识结构,和各个事件、方法、属性的用法

net.Server类

net.Socket类

事件

方法

属性

工厂方法

练习代码

netServer

var net=require("net");

/**
* 创建server
*/
function t1(){
var server=net.createServer(function(socket){
//socket.end("good bye!");
socket.write("hello,i'm server!");
console.log("client connected! %j:%j",socket.remoteAddress,socket.remotePort);
socket.on("data",function(data){
console.log("recived from client:",data.toString());
})
socket.on("close",function(had_error){
if(!had_error){
console.log("client closed success! %j:%j",socket.remoteAddress,socket.remotePort);
}
else{
console.log("client close error! %j:%j",socket.remoteAddress,socket.remotePort);
}
})
socket.on("error",function(err){
console.log("!!!err!!!",err);
});
//setTimeout(function(){
// socket.end("我结束了","utf8");
//},3000);
});
server.listen({
port:8889
},function(){
var address=server.address();
console.log(" opened server on address %j ",address);
}); var a=1;
}
t1();

netSocket

var net = require("net");

/**
* 初始化net clientSocket对象,测试发送数据,关闭连接
*/
function t1(autoclose){
var inteval;
var socket1=new net.Socket({
readable:true,
writable:true,
allowHalfOpen:true
});
socket1.on("data",function(data){
console.log("recived from server:"+data.toString());
});
socket1.on("close",function(){
console.log(" client closed success ");
});
socket1.on("error",function(err){
console.log(" client error: ",err);
});
socket1.connect({
host:"localhost",
port:8889
},function(){
console.log(" server connected");
inteval=setInterval(function(){
socket1.write("hello,i'm client!"+Math.random())
},3000)
});
if(autoclose){
setTimeout(function(){
socket1.destroy();
clearInterval(inteval)
//socket1.end("我结束了","utf8");
},3000);
}
} /**
* 通过net.connect创建clientSocket对象
*/
function t2(){
var client = net.connect({port: 8889},
function() { //'connect' listener
console.log('connected to server!!!');
client.write('world!\r\n');
});
client.on('data', function(data) {
console.log(data.toString());
//client.end();
});
client.on('end', function() {
console.log('disconnected from server');
}); } t1(false);
t1(true);
//t2();
//for(var i=0;i<1000;i++){
// console.log("连接个数:",i+1);
// t1(false);
//}

下图为server控制台的截图

 
使用Ctrl+C关闭client,clientsocket意外结束时,会触发error事件,随后触发close事件
 

开始学nodejs——net模块的更多相关文章

  1. 开始学nodejs —— 调试篇

    新学习一种技术,肯定会遇到很多坑,我们需要找到这些坑,弄清楚这些坑出现的原因和其中的原理.这种操作就叫做调试. 程序调试的方法和工具多种多样,在这里我总结一下我在学习nodejs的过程中,学到的和用到 ...

  2. nodejs事件模块

    nodejs 事件模块 events 只有一个对象 EventEmitter . var EventEmitter = require('events').EventEmitter;var life ...

  3. 配置 Windows 下的 nodejs C++ 模块编译环境

    根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境". 所有需要的安装文件, 我都下载好放到百度云盘了: nod ...

  4. NodeJS http 模块

    #4 NodeJS http 模块 工作目录 server.js var http = require('http'); var fs = require('fs'); var path = requ ...

  5. nodejs的模块系统(实例分析exprots和module.exprots)

    前言:工欲善其事,必先利其器.模块系统是nodejs组织管理代码的利器也是调用第三方代码的途径,本文将详细讲解nodejs的模块系统.在文章最后实例分析一下exprots和module.exprots ...

  6. nodejs cluster模块初探

    大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,为了使用多核cpu来提高性能 就有了cluster,让node可以利用多核CPU实现并行 ...

  7. NodeJS Web模块

    NodeJS Web模块 本文介绍nodeJS的http模块的基本用法,实现简单服务器和客户端 经典Web架构 Client:客户端一般指浏览器,通过HTTP协议向服务器发送请求(request) S ...

  8. 配置 Windows 下的 nodejs C++ 模块编译环境 安装 node-gyp

    配置 Windows 下的 nodejs C++ 模块编译环境 根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境&quo ...

  9. nodejs 视频教程《一起学nodejs》

    一起学nodejs 讲师:   matthew vscode+nodejs4.6 http://list.youku.com/albumlist/show/id_27966955.html?spm=a ...

随机推荐

  1. 从源码看Azkaban作业流下发过程

    上一篇零散地罗列了看源码时记录的一些类的信息,这篇完整介绍一个作业流在Azkaban中的执行过程,希望可以帮助刚刚接手Azkaban相关工作的开发.测试. 一.Azkaban简介 Azkaban作为开 ...

  2. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  3. 在离线环境中发布.NET Core至Windows Server 2008

    在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...

  4. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  5. 深入理解CSS六种颜色模式

    前面的话 赏心悦目的颜色搭配让人感到舒服,修改元素颜色的功能让人趋之若鹜.但颜色规划不当,会让网站用户无所适从.颜色从<font color="">发展至今,保留了很多 ...

  6. var和dynamic的区别

    1.var 1.均是声明动态类型的变量. 2.在编译阶段已经确定类型,在初始化的时候必须提供初始化的值. 3.无法作为方法参数类型,也无法作为返回值类型. 2.dynamic 1.均是声明动态类型的变 ...

  7. 【Java每日一题】20170106

    20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  8. 多线程同步工具——Lock

    本文原创,转载请注明出处. 参考文章: <"JUC锁"03之 公平锁(一)> <"JUC锁"03之 公平锁(二)> 锁分独占锁与共享锁, ...

  9. PHP static静态属性和静态方法

    这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内 ...

  10. SQL面试笔试经典题(Part 1)

    本文是在Cat Qi的原贴的基础之上,经本人逐题分别在MySql数据库中实现的笔记,持续更新... 参考原贴:http://www.cnblogs.com/qixuejia/p/3637735.htm ...