使用其他编程语言实现节点js的步骤

时间:2012-04-09 05:34:13

标签: sockets node.js network-programming udp

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

我的问题:

  1. 当我想用另一种语言创建套接字客户端但服务器是否使用nodejs时有哪些步骤或建议?
  2. 我用java创建了UDP客户端,但是当我想连接到Node JS服务器时,我无法连接。我认为在节点js中有任何规则要连接到服务器,您的看法如何?

3 个答案:

答案 0 :(得分:3)

  

如果我的问题不好,我就知道了,我的意思是我想用socket实现socket   nodejs喜欢UDP和TCP,我想用另一个创建套接字客户端   编程。

你必须choose between UDP or TCP.每个协议都有它的优点/缺点。我非常喜欢该网站上的两张图片。

<强> TCP

advantages TCP

UDP

enter image description here

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

  

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

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

答案 1 :(得分:2)

TCP和UDP套接字与语言无关,如果NodeJS中有UDP服务器,Java中有UDP客户端,则应该可以直接使用。

所以你必须在NodeJS或Java程序中做错事。这是一个简单的Hello world程序:

Server.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();
   }
}

答案 2 :(得分:0)

通过TCP或UDP连接两个不同的程序不应该有任何问题。事实上,其中一个基本目的是解决这些问题。

尝试使用here中的spec编写节点js服务器。它应该工作。如果它仍然没有,那么也发布您的Java代码。我们可以通过它来挖掘它。