2011-12-06 55 views
6

我试图通过套接字将数据从node.js发送到Java。 我周围搜索,但没有什么是真正有用的。我习惯了socket.io,但在这种情况下,它似乎并不适合这个。似乎所有node.js的套接字扩展都不适合发送消息,而是倾听消息并回答某些问题。使用套接字将数据从node.js发送到Java

我的Java应用程序基本上应该从node.js接收一些工作,做一些工作并将一些结果发送回node.js。不,工作不能在node.js上完成,它必须由Java完成(实际上是Scala,但不管)。

有没有人知道我该怎么做这样的事情?

感谢

+0

你有没有考虑过内建的[net.Socket](http://nodejs.org/docs/latest/api/net.html#net.Socket)? –

+0

我升级到节点的最后一个版本,它似乎净东西没有方法'。连接',因此我不能使用它们,我不知道为什么。 – Masiar

回答

14

您可以使用构建在插座node.js中做类似的东西(包括Java和node.js中很容易,但你会得到点):

的Java :

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class Test { 

    public static void main(String[] args) { 
     ServerSocket server; 
     Socket client; 
     InputStream input; 

     try { 
      server = new ServerSocket(1010); 
      client = server.accept(); 

      input = client.getInputStream(); 
      String inputString = Test.inputStreamAsString(input); 

      System.out.println(inputString); 

      client.close(); 
      server.close(); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static String inputStreamAsString(InputStream stream) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(stream)); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 

     while ((line = br.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 

     br.close(); 
     return sb.toString(); 
    } 

} 

的Node.js:

var net = require('net'); 

var client = net.connect(1010, 'localhost'); 

client.write('Hello from node.js'); 

client.end(); 

和链接至插座Node.js的文档:http://nodejs.org/docs/latest/api/net.html

+0

感谢您的回复!我有另一个问题:当我做'net.connect(...)'节点编译器抱怨说'对象#没有方法'连接',你知道发生了什么? – Masiar

相关问题