net模块
对比C语言的网络编程,Node.js有更加简便的开发模式与模块提供。它就是net模块 在需要使用的时候只需要require("net")就可以引入模块了。
var net
= require("net");
服务端编程
引入模块的前提下:
创建一个新的TCP或IPC服务
var server
= net
.createServer(function(client_socket
) {
console
.log("client coming");
});
2. 创建connections 启动一个 server 监听.
server
.listen({
host
:'127.0.0.1',
port
:6080,
exclusive
:true,
});
客户端编程
引入net模块。
创建一个连接即可
var socket
= net
.connect({
port
:6080,
host
:'127.0.0.1',
},
function(){
console
.log("connected to server!");
});
效果
事件监听
常用监听事件事件类型事件触发条件
connection连接成功调用的事件error发生错误调用的事件close当server关闭的时候触发. 注意,如果有连接存在, 直到所有的连接结束才会触发这个事件data当接收到数据的时触发该事件。data 参数是一个 Buffer 或 String。数据编码由 socket.setEncoding() 设置。注意当 Socket 发送 data 事件的时候,如果没有监听者数据将会丢失。listening当服务被绑定后调用 server.listen().end当 socket 的另一端发送一个 FIN 包的时候触发,从而结束 socket 的可读端。
监听事件的API都是使用on()方法。
Demo演示
下面有一个详细的demo可自行尝试
tcpserver.js
var net
= require('net');
var server
= net
.createServer(function(client_socket
) {
console
.log("client coming");
client_socket
.setEncoding("utf8");
client_socket
.on("error",function(err
){
console
.log("error");
});
client_socket
.on("data",function(data
){
console
.log(data
);
});
client_socket
.on("close",function(client_socket
){
console
.log("close socket");
});
});
server
.listen({
host
:'127.0.0.1',
port
:6080,
exclusive
:true,
});
server
.on("connection",function(client_socket
){
console
.log("connection");
});
server
.on("error",function (error
) {
console
.log("error is on server",error
);
});
server
.on("close",function(client_socket
){
console
.log("close server");
});
tcpclient.js
var net
= require("net");
var socket
= net
.connect({
port
:6080,
host
:'127.0.0.1',
},
function(){
console
.log("connected to server!");
});
socket
.on("connect",function(){
console
.log("connect success");
socket
.write("Hello World!","utf8");
});
socket
.on("error",function (err
) {
console
.log("error is ",err
);
});
socket
.on("close",function(){
console
.log("close");
});
socket
.on("end",function(){
console
.log("end event");
})
socket
.on("data",function(data
){
console
.log(data
);
});