2011-12-06 53 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

相關問題