客户端向tcp服务器发送数据,tcp服务器向另一台服务器发送数据

客户端向tcp服务器发送数据,tcp服务器向另一台服务器发送数据

问题描述:

客户端正在以1分钟的时间间隔向tcp服务器(ip:54.168.66.136,端口:8589)发送数据。我在此服务器上接收数据很好。现在我想要做的是,此tcp服务器必须将数据发送到另一个 服务器(ip:54.165.75.176,端口:8125)。我应该在代码中更改哪些内容?客户端向tcp服务器发送数据,tcp服务器向另一台服务器发送数据

//tcpserver.js code is below 
net = require('net'); 
var http = require('http'); 
var moment = require('moment'); 
var fs = require('fs'); 
var clients = []; 
var client = new net.Socket(); 
var querystring = require('querystring'); 
net.createServer(function (socket) { 
clients.push(socket); 
socket.connected_state = "IGN_ON"; 
socket.on('data', function (data) { 

try { 
    data =""+data; 
    client.connect(8125, '54.165.75.176', function() { 
      client.write(data); 
    }); 
    /*client.on('close', function() { 
    // console.log('Connection closed'); 
    });*/ 
    }catch (err) { 
    } 
    }); 
    socket.on('end', function() { 
        clients.splice(clients.indexOf(socket), 1); 
    }); 

}).listen(8589); 
+0

的https://*.com/q/45636340/207421 – EJP

+0

*.com/q/45636340/207421问题完全重复的客户端编码 –

这里的问题是,每次您收到数据缓冲区时,都会尝试创建连接。所以当你收到第一个数据包时,数据包就会被转发。当第二个数据包被击中时,真正的问题就出现了。它试图再次创建与服务器的连接,但它已经存在。后

client.write(数据)你从没叫过client.end()

理想情况下,你不应该创建每次收到一个数据包时的连接。为什么不保持连接并继续转发数据包?我的建议是:

net = require('net'); 
var http = require('http'); 
var moment = require('moment'); 
var fs = require('fs'); 
var clients = []; 
var client = new net.Socket(); 
var querystring = require('querystring'); 

client.connect(8125, '54.165.75.176', function() { 
       console.log('Connected to Server: 54.165.75.176'); 
     }); 

net.createServer(function (socket) { 
    clients.push(socket); 
    socket.connected_state = "IGN_ON"; 
    socket.on('data', function (data) { 

     try { 
      data =""+data; 
      client.write(data); 
      /*client.on('close', function() { 
      // console.log('Connection closed'); 
      });*/ 
     } 

     catch (err) { 
     } 
    }); 

    socket.on('end', function() { 
     clients.splice(clients.indexOf(socket), 1); 
    }); 
}).listen(8589); 
+0

感谢亚尔终于解决了 –

+0

快乐帮助 :) – WinningAddicted