小熊1986

导航

nodejs 网络基础

服务器的代码如下,还有一些基础概念

/**
 * 概念:
 * ip和端口主要是为了区分服务器的运用的操作
 * ipv4的格式 [0-255] xxxx.xxxx.xxxx.xxxx
 * ipv6的格式 [0-0xffff] 8个xxxx
 * 可靠:tcp
 * 不可靠:udp
 * 
 * tcp可靠的原因
 * 1.面向连接
 * 2.字节流,传输层的服务器
 * 3.采用3次握手
 * 
 * 握手协议:
 * 1.客户端连接进来的信息
 * 2.服务器监听的socket客户端的连接,重新创建一个socket与之匹配
 * 3.然后发送给客户端告诉客户端已经连接成功
 * 4.客户端这个就可以正常发送数据,服务器也可以正常接收到服务器的消息
 * 5.如果客户端断开,会向服务器发送离开的信息
 * 6.服务器监听socket收到这个消息包,就会把对应的绑定的socket进行删除
 */ 

 //服务器的编写
 //1.导入相应的模块
 let net = require("net");

//2.监听当服务器ip和端口
const server = net.Server();

server.listen({
    host:"192.168.1.10",
    port:6666,
    exclusive:true
})

//3.对应的事件部分
//连接事件
server.on("connection",function(clsock) {
    console.log("有客户端做连接");
    //客户端关闭事件
    clsock.on("close",function(){
        console.log("客户端关闭");
    })

    //错误事件
    clsock.on("error",(error)=>{
        console.log(error);
    })

    clsock.on("data",(data)=>{
        //接收到数据
        console.log("收到客户端的消息"+data);
        clsock.write(data);
    })
})

//错误事件
server.on("error",(error)=>{
    console.log(error);
})

//监听事件
server.on("listening",()=>{
    console.log("服务器开启....");
})

客户端代码

//第一步引入对应的包
var net = require('net');

//console.log(net)

//2.创建客户端的socket对象
const sock = net.createConnection({host:"192.168.1.10",port:6666},function(){
    console.log("已经连接到服务器");
    //发送相关的消息
    sock.write("hello");
})

sock.setTimeout(15000);//设置timeout时间

//3.建立所有的监听事件
//错误事件
sock.on("error",function(error){
    console.log(error);
})

//监听接受数据部分
sock.on("data",function(data){
    console.log("服务器发送的数据"+data);
})

//关闭事件
sock.on("close",function(data){
    console.log("关闭事件");
})

//超时
sock.on("timeout",function(){
    console.log("时间超时");
    sock.end();
})

//end事件
sock.on("end",function(){
    console.log("end事件被出发");
})

posted on 2020-11-28 20:47  小熊1986  阅读(37)  评论(0编辑  收藏  举报