zoukankan      html  css  js  c++  java
  • Node.js中使用TCP套接字编程

    想知道如何在NodeJS中使用socket编程?在NodeJS中有三种socket:1. TCP,2. UDP,3. Unix域套接字,本文主要介绍NodeJS中TCP的基本编程知识。

    你可以创建两种类型的TCP套接字:1. 服务端,2. 客户端。服务端TCP监听来自客户端的连接请求,并使用TCP连接向客户端发送数据;客户端TCP连接到服务端并与服务器交互数据。客户端与服务端之间依靠套接字进行双向通信。

    在NodeJS中使用TCP需要引用net模块。net模块是NodeJS中异步网络编程的封装,可以做很多事情,本文仅关注于如何使用该模块创建服务端与客户端的TCP套接字。

    创建TCP服务端

    var net = require('net');
    
    var HOST = '127.0.0.1';
    var PORT = 6969;
    
    // 创建一个TCP服务器实例,调用listen函数开始监听指定端口
    // 传入net.createServer()的回调函数将作为”connection“事件的处理函数
    // 在每一个“connection”事件中,该回调函数接收到的socket对象是唯一的
    net.createServer(function(sock) {
    
        // 我们获得一个连接 - 该连接自动关联一个socket对象
        console.log('CONNECTED: ' +
            sock.remoteAddress + ':' + sock.remotePort);
    
        // 为这个socket实例添加一个"data"事件处理函数
        sock.on('data', function(data) {
            console.log('DATA ' + sock.remoteAddress + ': ' + data);
            // 回发该数据,客户端将收到来自服务端的数据
            sock.write('You said "' + data + '"');
        });
    
        // 为这个socket实例添加一个"close"事件处理函数
        sock.on('close', function(data) {
            console.log('CLOSED: ' +
                sock.remoteAddress + ' ' + sock.remotePort);
        });
    
    }).listen(PORT, HOST);
    
    console.log('Server listening on ' + HOST +':'+ PORT);

    创建TCP客户端

    var net = require('net');
    
    var HOST = '127.0.0.1';
    var PORT = 6969;
    
    var client = new net.Socket();
    client.connect(PORT, HOST, function() {
    
        console.log('CONNECTED TO: ' + HOST + ':' + PORT);
        // 建立连接后立即向服务器发送数据,服务器将收到这些数据 
        client.write('I am Chuck Norris!');
    
    });
    
    // 为客户端添加“data”事件处理函数
    // data是服务器发回的数据
    client.on('data', function(data) {
    
        console.log('DATA: ' + data);
        // 完全关闭连接
        client.destroy();
    
    });
    
    // 为客户端添加“close”事件处理函数
    client.on('close', function() {
        console.log('Connection closed');
    });

    贴出一篇好文章:https://www.cnblogs.com/lyy-2016/p/6747616.html

  • 相关阅读:
    knockout之ko if绑定和ifnot绑定
    inline-block去掉空白距离的方法
    DOM
    $(document).ready()与window.onload的区别
    white-space: nowrap
    商品列表属性过滤
    for循环与for in循环
    表单验证
    表单验证四个步骤
    ID和Name的区别
  • 原文地址:https://www.cnblogs.com/zhou195/p/8994864.html
Copyright © 2011-2022 走看看