开始学nodejs——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控制台的截图
开始学nodejs——net模块的更多相关文章
- 开始学nodejs —— 调试篇
新学习一种技术,肯定会遇到很多坑,我们需要找到这些坑,弄清楚这些坑出现的原因和其中的原理.这种操作就叫做调试. 程序调试的方法和工具多种多样,在这里我总结一下我在学习nodejs的过程中,学到的和用到 ...
- nodejs事件模块
nodejs 事件模块 events 只有一个对象 EventEmitter . var EventEmitter = require('events').EventEmitter;var life ...
- 配置 Windows 下的 nodejs C++ 模块编译环境
根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境". 所有需要的安装文件, 我都下载好放到百度云盘了: nod ...
- NodeJS http 模块
#4 NodeJS http 模块 工作目录 server.js var http = require('http'); var fs = require('fs'); var path = requ ...
- nodejs的模块系统(实例分析exprots和module.exprots)
前言:工欲善其事,必先利其器.模块系统是nodejs组织管理代码的利器也是调用第三方代码的途径,本文将详细讲解nodejs的模块系统.在文章最后实例分析一下exprots和module.exprots ...
- nodejs cluster模块初探
大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,为了使用多核cpu来提高性能 就有了cluster,让node可以利用多核CPU实现并行 ...
- NodeJS Web模块
NodeJS Web模块 本文介绍nodeJS的http模块的基本用法,实现简单服务器和客户端 经典Web架构 Client:客户端一般指浏览器,通过HTTP协议向服务器发送请求(request) S ...
- 配置 Windows 下的 nodejs C++ 模块编译环境 安装 node-gyp
配置 Windows 下的 nodejs C++ 模块编译环境 根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境&quo ...
- nodejs 视频教程《一起学nodejs》
一起学nodejs 讲师: matthew vscode+nodejs4.6 http://list.youku.com/albumlist/show/id_27966955.html?spm=a ...
随机推荐
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- C#学习资源
# 视频 C#程序设计 Cousera(推荐) # 文档 C#教程 MSDN Microsoft API 和参考目录
- 如何创建Vim Dotfile?
Dotfile是电脑系统里的隐藏文件,它是专门给更高级的用户,如开发者.程序员或工程师使用的,让他们用来调整系统.如何创建Vim-Dotfile? 可以参考以下步骤: 1. 首先,你要检查一下.vim ...
- 客户端的验证插件validator
简单,智能,令人愉悦的表单验证~~~ 官方文档:http://www.niceue.com/validator/ <!DOCTYPE html> <html> <head ...
- C#中如何调整图像大小
在本篇文章中,我将介绍如何在C#中来调整你想要的图像大小.要实现这一目标,我们可以采取以下几个步骤: 1.首先要获取你想要调整大小的图像: string path = Server.MapPath(& ...
- Mybatis XML配置
Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- CSS 3 学习——渐变
通过CSS渐变创建的是一个没有固定比例和固定尺寸的<image>类型,也就是说是一张图片,这张图片的尺寸由所应用的元素的相关信息决定.凡是支持图片类型的CSS属性都可以设置渐变,而支持颜色 ...
- 2Sum
用哈希表(unordered_map)使得时间复杂度从O(n*n)降到O(n),空间复杂度从O(1)增到O(n):一边找一边插入哈希表 注意 在C++11以前要使用unordered_map需要 #i ...
- Android中的沉浸式状态栏效果
无意间了解到沉浸式状态栏,感觉贼拉的高大上,于是就是试着去了解一下,就有了这篇文章.下面就来了解一下啥叫沉浸式状态栏.传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别.这一样就在一定 ...
- Hadoop伪分布式集群环境搭建
本教程讲述在单机环境下搭建Hadoop伪分布式集群环境,帮助初学者方便学习Hadoop相关知识. 首先安装Hadoop之前需要准备安装环境. 安装Centos6.5(64位).(操作系统再次不做过多描 ...