【发布时间】:2015-10-18 21:01:51
【问题描述】:
我有以下 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()));
我的问题是如何让 Java 代码读取“Hello World”,这样每当我调用 System.out.println(input.readLine()) 时,它就会打印“Hello World”?
【问题讨论】:
-
有什么问题?它无法连接或连接但它没有读取任何内容?另外,你不需要写
res.writeHead(200, {'Content-Type':'text/plain'});,因为你只是在 TCP 层打开了一个原始套接字,所以那里不需要 HTTP 代码。 -
嗨。我对java不熟悉,但从节点方面来看,你可能想要某种在联系时响应hello world的webservice?在这种情况下,您可以让 java 访问节点服务器正在运行的 URL:端口以获取结果。我的方法不使用 websocket 连接。 websocket 连接对您的工作至关重要吗?特别是因为在示例中您使用的是 localhost,这意味着不会有网络延迟。
-
@Darken 是的,Java 代码没有读取任何内容。它不在控制台中打印“Hello World”?为什么。但是当我停止服务器(在端口上运行)时,控制台上会写入“null”。感谢您的帮助
-
@X0r0N 是的,Web 套接字对我的工作并不重要。到目前为止,我希望这个项目能够在本地工作(所以我可以测试它)。你的方法是什么?感谢您的帮助
-
你的 node.js 服务器是一个 http 服务器。这意味着当你连接到它并从 Java 发出请求时,你必须发送一个 HTTP 请求,而不仅仅是打开一个套接字并读取。我个人不了解 Java,但我很确定它有用于发送 HTTP 请求的类,可以用几行代码为您完成此操作。
标签: javascript java node.js sockets