【问题标题】:Convert java thread-based tcp socket server to javascript async tcp socket server将基于 Java 线程的 tcp 套接字服务器转换为 javascript 异步 tcp 套接字服务器
【发布时间】:2013-05-15 06:28:59
【问题描述】:

我希望将基于 java 线程的 tcp 套接字服务器转换为基于 javascript(最好是 nodejs)的异步 tcp 套接字服务器。这是我的应用程序,现在正在学习 nodejs。认为通过这种方式了解更多关于 nodejs 的信息将是一个很好的练习。

我查看了 nodejs 并将使用 net 模块。我还读到 nodejs 是基于事件的,不做基于线程的东西。

有什么想法吗?

【问题讨论】:

  • 删除 [java] 作为答案与 Java 没有任何关系。
  • 感谢更新,@PeterLawrey

标签: javascript node.js sockets asynchronous


【解决方案1】:

这个问题实际上很模糊,但我会尝试回答发布一个我在nodeJS中看到的非常简单的TCP服务器的链接:

http://www.hacksparrow.com/tcp-socket-programming-in-node-js.html

您是对的,您必须设置一些事件,然后您将不得不进行数据处理等等,但这在很大程度上取决于您的服务器的用途、它将接收什么样的数据以及预计会产生什么。

如果您就您的问题提供更多详细信息,我想我们将能够更好地阐明其功能。

好的,所以根据您的新细节,您必须执行以下操作才能开始收听:

var server = net.createServer();
server.listen(PORT, HOST);
console.log('Server listening on ' + server.address().address +':'+server.address().port);

然后这是监听连接并处理数据:

server.on('connection', function(sock) {
    console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort);
    sock.on('data', function(data) {
        console.log('DATA ' + sock.remoteAddress + ': ' + data);
        // here you'll do all your data processing, for instance 
        // call some JSON webservices that will write SQL queries...
    });
});

【讨论】:

  • 我的 java 服务器当前接收 ascii 文本。它首先与客户端握手(身份验证),然后发送由 '\r\n' 分隔的数据。由 '\r\n' 分隔的每一行都需要插入到 mysql 数据库中。现在,它在带有线程的 Java 套接字上运行。我读到 nodejs 没有线程的概念(除了 Fiber),想写一个异步 tcp 服务器来与入站客户端通信。
  • 我已经设法使用 nodejs 从 java 客户端接收数据。但是发回握手数据不起作用。但是您的解决方案回答了我的问题。
  • 要将数据发送回客户端,您只需使用 sock.on('data',...) 函数中的 sock.write: sock.on('data', function( data) { console.log('DATA' + sock.remoteAddress + ':' + data); sock.write('HANDSHAKE OK...'); });
猜你喜欢
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多