我希望 Node JS 服务器与 UDP 或 TCP 客户端通信。
我的问题:
- 当我想用另一种语言创建套接字客户端但服务器使用的是 nodejs 时,有哪些步骤或建议?
- 我已经用 java 创建了 UDP 客户端,但是当我想连接到 Node JS 服务器时,我无法连接。我认为在节点 js 中有什么规则可以连接到服务器,你的意见如何?
我希望 Node JS 服务器与 UDP 或 TCP 客户端通信。
我的问题:
如果我的问题不好,我很抱歉,我的意思是我想用 UDP 和 TCP 之类的 nodejs 实现套接字,我想使用另一个编程来创建套接字客户端。
您必须在 UDP 或 TCP 之间进行选择。每个协议都有它的优点/缺点。我真的很喜欢那个网站上的两张图片。
我建议您使用 TCP,尤其是当您没有太多实现 UDP 的经验时。此外,我建议您使用 HTTP(在 TCP 之上),因为它在任何编程语言中都可以广泛使用。我认为一个非常简单的解决方案是定义一个 REST API。您可以在节点端使用express.js和作为客户端的superagent轻松创建服务器端(与其他服务器实现交互)。例如,在 java 上,您可以使用大气铲服务器和async-http-client
当我想用另一种语言创建套接字客户端但服务器使用的是 nodejs 时,有哪些步骤或建议?
我建议使用JSON进行数据交换。您可以轻松找到任何语言的可靠实现,并且用户浏览器也支持它。
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();
}
}
通过 TCP 或 UDP 连接两个不同的程序应该没有任何问题。事实上,基本目的之一就是解决这种情况。
尝试在此处使用规范编写您的节点 js 服务器。它应该工作。如果仍然没有,那么也发布您的 java 代码。我们可以挖掘它。