0

我希望 Node JS 服务器与 UDP 或 TCP 客户端通信。

我的问题:

  1. 当我想用另一种语言创建套接字客户端但服务器使用的是 nodejs 时,有哪些步骤或建议?
  2. 我已经用 java 创建了 UDP 客户端,但是当我想连接到 Node JS 服务器时,我无法连接。我认为在节点 js 中有什么规则可以连接到服务器,你的意见如何?
4

3 回答 3

3

如果我的问题不好,我很抱歉,我的意思是我想用 UDP 和 TCP 之类的 nodejs 实现套接字,我想使用另一个编程来创建套接字客户端。

您必须在 UDP 或 TCP 之间进行选择。每个协议都有它的优点/缺点。我真的很喜欢那个网站上的两张图片。

TCP

优势 TCP

UDP

在此处输入图像描述

我建议您使用 TCP,尤其是当您没有太多实现 UDP 的经验时。此外,我建议您使用 HTTP(在 TCP 之上),因为它在任何编程语言中都可以广泛使用。我认为一个非常简单的解决方案是定义一个 REST API。您可以在节点端使用express.js和作为客户端的superagent轻松创建服务器端(与其他服务器实现交互)。例如,在 java 上,您可以使用大气铲服务器async-http-client

当我想用另一种语言创建套接字客户端但服务器使用的是 nodejs 时,有哪些步骤或建议?

我建议使用JSON进行数据交换。您可以轻松找到任何语言的可靠实现,并且用户浏览器也支持它。

于 2012-04-09T22:24:14.220 回答
2

TCP 和 UDP 套接字不依赖于语言,如果您在 NodeJS 中有一个 UDP 服务器,在 Java 中有一个 UDP 客户端,那么这应该可以开箱即用。

所以你一定是在你的 NodeJS 或 Java 程序中做错了什么。这是一个简单的 Hello world 程序:

服务器.js:

var dgram = require("dgram");
var server = dgram.createSocket("udp4");

server.on("message", function (msg, rinfo) {
  console.log("server got: " + msg + " from " +
    rinfo.address + ":" + rinfo.port);
});

server.on("listening", function () {
  var address = server.address();
  console.log("server listening " +
      address.address + ":" + address.port);
});

server.bind(41234);
// server listening 0.0.0.0:41234

和 UDPClient.java :

import java.io.*;
import java.net.*;

class UDPClient 
{
   public static void main(String args[]) throws Exception
   {
      DatagramSocket clientSocket = new DatagramSocket();
      InetAddress IPAddress =  InetAddress.getByName("localhost");
      byte[] sendData = new byte[1024];
      String sentence = "Hello World!";
      sendData = sentence.getBytes();
      DatagramPacket sendPacket =  new DatagramPacket(sendData, sendData.length, IPAddress, 41234);
      clientSocket.send(sendPacket);
      clientSocket.close();
   }
}
于 2012-04-09T15:10:23.783 回答
0

通过 TCP 或 UDP 连接两个不同的程序应该没有任何问题。事实上,基本目的之一就是解决这种情况。

尝试在此处使用规范编写您的节点 js 服务器。它应该工作。如果仍然没有,那么也发布您的 java 代码。我们可以挖掘它。

于 2012-04-09T14:59:50.143 回答