2015-10-18 27 views
0

我有以下的Node.js代码:通过套接字结合Java和Node.js的

var http = require('http'); 

http.createServer(function(req, res)) { 
    console.log("URL request"+req.url); 
    res.writeHead(200, {'Content-Type':'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(9898, '127.0.0.1'); 

console.log('Server locally running at http://127.0.0.1:9898/'); 

我在Java中使用Socket类使一个插座也连接到端口9898。我想无论Node.js写入(在本例中为'Hello World'),由Java类处理。到目前为止,这是我对Java类:

Socket s = new Socket(serverAddress, 9898); 
BufferedReader input = 
     new BufferedReader(new InputStreamReader(s.getInputStream())); 

我的问题是我怎么得到的“Hello World”,由Java代码来读取,所以,每当我打电话System.out.println(input.readLine()),它打印“你好,世界'?

+0

这是什么问题?它无法连接或连接,但它不读取任何东西?另外,你不需要编写'res.writeHead(200,{'Content-Type':'text/plain'});'因为你只是在TCP层打开一个原始套接字,所以不需要HTTP代码那里。 – ESala

+0

嗨。我不熟悉java,但从节点方面看来,您可能希望某种webservice在联系时与hello world进行响应?在这种情况下,您可以让java访问运行节点服务器的URL:端口以获取结果。我的方法不使用websocket连接。 websocket连接对于您的工作至关重要?特别是因为在这个例子中你使用的是localhost,这意味着没有网络延迟。 – X0r0N

+0

@Darken是的,Java代码不会读取任何内容。它不在控制台中打印“Hello World”?为什么。但是当我停止服务器(在端口上运行)时,在控制台上写入'null'。感谢您的帮助 – user5139637

回答

0

你有一个额外的“)”在第三行,但你的代码似乎工作,否则:

var http = require('http'); 

http.createServer(function(req, res) { 
    console.log("URL request"+req.url); 
    res.writeHead(200, {'Content-Type':'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(9898, '127.0.0.1'); 

console.log('Server locally running at http://127.0.0.1:9898/'); 

我猜你需要创建一些Java功能,使一个HTTP请求的URL:端口节点服务器正在运行。它可能不会像'input.readLine()'那么简单。

也许像这样将有助于获取Java代码从节点获取数据:

How can I get an http response body as a string in Java?

+0

我正在制作网络应用程序。在这个应用程序中,用户输入一些东西这个字符串(用户输入的)需要被发送到一个java类,它可以处理输入,然后将其发送回javascript,然后将其发布到屏幕上。我在JavaScript和Java之间选择的是node.js.最好的方法是什么?我需要对Node.js代码做出我想做什么更改。我是Node.js(也是java)的初学者,所以我很感激所有帮助 – user5139637