【问题标题】:Listen for TCP connection from connected object on 3G network侦听来自 3G 网络上已连接对象的 TCP 连接
【发布时间】:2017-11-03 15:47:14
【问题描述】:

我有一个在 3G 网络上工作的连接对象,它正在一个可选端口上向我的 IP 发送数据。

我想在 node.js 程序上读取从该对象发送的数据,因为我服务器上的所有 API 都在 node.js 上

为此,我尝试创建一个像这样的“网络”服务器:

var net = require('net');

var server = net.createServer(function (socket) {

    socket.on('data', function (data) {

        var StrData = data.toString('ascii');
        fs.appendFile("test.txt","data received : "+ StrData, function (err) {
            if (err) throw err;
            console.log(StrData);
        });
    });
});
server.listen(2000, '0.0.0.0');

并且我正在根据需要将对象发送的所有数据发送到我的“test.txt”文件中。问题是我的服务器在收到第一个数据后似乎关闭了连接,所以我的连接对象每次都必须创建另一个连接,才能发送第一个数据。

我的问题是:

如何让连接打开以便对象可以发送所有数据?

我也尝试了“socket.io”和“http”,但我无法得到我想要的。

【问题讨论】:

    标签: node.js sockets tcp socket.io


    【解决方案1】:

    使用给定的代码很难调试问题,您可以尝试向您的套接字添加错误侦听器并查看是否触发了任何错误:

    socket.on('error', (err) => {
      console.log(err);
    }
    

    我的猜测是您的客户端正在关闭套接字,认为请求已超时(因为您没有返回某种成功响应)。 net.createServer 创建一个 TCP 服务器,它期望所有请求都得到响应。

    【讨论】:

    • 即使我回答了一些问题,它也不起作用 :( 似乎连接在收到数据包后自动关闭,实际上当我尝试使用“nc”linux 命令连接到此端口时,当其他服务器继续侦听时发送数据后连接正在关闭..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2012-07-25
    • 2017-11-04
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多