• Node.js网络编程


    一:Node.js中的套接字服务由Net模块提供,其中包含了创建服务器/客户端的方法。

      (1):Net模块提供的API:

    net.createServer([optinons][,connectionListener]) 创建了一个TCP服务器,参数connectionListener自动给connection事件创建监听.
    net.connect() 返回一个新的net.Socket,并且连接到指定的地址和端口,当socket创建的时候,将会触发connect事件.
    net.createConnection(options[,connectionListener]) 创建一个端口指定port和ip的TCP连接
       
       
       

    服务器端代码:

    /*
    1:server对象中可以被触发事件
    listening:当服务器调用server.listen绑定后会触发
    connection:当新连接创建后会被触发.
    close:服务器关闭时会被触发:
    error:发生错误时触发,close事件将被下列事件直接调用.
    */
    var net = require('net');
    var server = net.createServer(); //等到一个实列化的服务器对象.
    //监听客户端的连接事件connection(),连接成功就会执行回调函数.
    server.on('connection',function() {
        console.log('有客户连接上来了');
    });
    server.on('listening',function(){
        console.log('服务器开始监听');
    });
    server.listen(8888,'127.0.0.1');
    /*
    server.on('close',function(){
        console.log('关闭了服务器');
    });
    server.close(function(){
        console.log('开始关闭服务器');
        var s = server.address();
        console.log(s);
    });
    */
    /*
    2:服务器端可以调用的函数:
    server.listen(port,host,backlog,callback)
    host:接受任何IPV4地址.
    server.listen(path[,clallback])
    通过指定path的连接,启动一个本地socket服务器.
    server.close(clallback)
    服务器停止接收新的连接,保持现有连接,这是异步函数,当所有连接结束的时候
    服务器会关闭,并触发close事件.
    server.address()
    操作系统返回绑定的地址,协议簇名和服务器端口
    server.getConnections(callback)
    异步获取服务器当前活跃连接的数量.当socket发送给子进程后才有效;回调函数有两个参数
    err和count.
    */

    二:Net.Socket对象;Net.Socket实例实现了一个Duplex(双工,双向)流接口,提供了Writeable和Readable所有功能,所以可以说它是可读流也是可写流.

    /*
    1:当客户端进行连接时会触发connection事件,事件的回调函数会把客户端的IP地址
    和端口号封装到一个Socket对象中.
    */
    /*
    2:socket对象可调用函数:
    net.Socket([options]):构造一个新的socket对象;
    socket.connect(port[,host][,connectListener])
    指定端口和地址进行连接服务器.
    socket.write(data[,encoding][,callback])
    在socket上发送数据.
    socket.address();
    返回服务器的一些信息.
    */
    /*
    3:socket对象可以触发的事件
    lookup:在解析域名时,但在连接前,触发这个事件
    connect:成功建立socket连接时触发.
    data:当接受到数据时触发:
    end:当socket另一端发送FIN包时,触发该事件
    timeout:当socket空闲时触发,仅仅表明socket已经空闲.
    error:
    close:当socket关闭时触发.
    */
    var net = require('net');
    var server = net.createServer();
    server.on('connection',function(socket) {
        console.log('有客户连接上');
        console.log('有客户端IP地址:'+socket.remoteAddress+'连接到了当前服务器');
        socket.write('hello world');
        socket.address();//返回服务器
        var l = socket.bytesWritten();
        console.log('发送的字节数'+l);
        socket.on('data',function(){
            console.log('收到客户端发送来的信息');
        });
    });
    server.on('listening',function(){
        console.log('服务器开始监听成功了,正在等待客户连接');
    });
    server.listen(8888,'127.0.0.1');
    /*
    4:socket对象的属性:
    socket.remoteAddress:远程的IP地址字符串.
    socket.localPort:本地端口地址,用数字表示,
    socket.bytesRead:接受到的字节数.
    socket.bytesWritten:发送的字节数;
    */

     三:Process模块获取终端的输入;

    /*
    测试获取终端输入:
    */
    process.stdin.on('data',function (data) {
        console.log(data.toString().trim());
    /*
    trim()函数是用来去除空格的.
    */
  • 相关阅读:
    老罗android开发视频教程学习完了
    微软云工具
    Andriod视频http://pan.baidu.com/share/link?shareid=7300&uk=3339495714
    微软图片编辑工具
    Smartdraw世界上最流行的商业绘图软件
    arcgis安装问题SDK开始安装不了
    光学字符识别OCR
    Android实现OCR扫描识别数字图片之图片扫描识别
    android实现图片识别的几种方法
    开源的asp.net工作流程引擎。 http://ccflow.org
  • 原文地址:https://www.cnblogs.com/1314bjwg/p/12517389.html
Copyright © 2020-2023  润新知