javascript - 通过套接字发送和接收数据:Node.JS 服务器、Java 客户端
问题描述
我正在尝试将数据从 Node JS 网络服务器发送到 java 应用程序。这是我的 JS 代码:
var server = net.createServer(function (c) { //'connection' listener
console.log('server connected');
c.on('end', function () {
console.log('server disconnected');
});
c.on('data', (d) => {
console.log(data);
});
c.pipe(c);
setInterval(() => {
let obj = { "foo": "bar" };
c.write(JSON.stringify(obj));
}, 3000)
});
server.listen(58430, function () { //'listening' listener
console.log('server bound');
});
所以我现在只是在调试,并尝试每隔一段时间发送数据(foo:bar)。
这是我的java端,循环运行:
InputStreamReader inFromClient = new InputStreamReader(client.getInputStream());
while (running.get()) {
String data = Tools.ReadUntilNull(inFromClient);
Log.debug("Received: " + data);
}
其中“客户端”是侦听正确端口的套接字。'running' 是一个真实的原子布尔值。
Tools.ReadUntilNull 对应于此:
public static String ReadUntilNull(InputStreamReader reader) throws IOException {
StringBuilder sb = new StringBuilder();
char[] results = new char[1];
int bytes_read = reader.read(results);
while (results[0] != 0x00 && bytes_read == 1) {
sb.append(results[0]);
bytes_read = reader.read(results);
}
return sb.toString();
}
我的 Node.JS 应用程序记录服务器已绑定和连接。只有当我发送数据时,我似乎无法在我的 Java 客户端中接收到它。
我只是在学习java,所以请放轻松^^
解决方案
我认为你只是做错了。正如您所提到的,您正在尝试在 java 端阅读。然后你应该创建 nodejs 客户端。验证相同。
更多: https ://nodejs.org/api/net.html#net_net_createconnection
const net = require('net');
const client = net.createConnection({ port: 8124 }, () => {
// 'connect' listener.
console.log('connected to server!');
client.write('world!\r\n');
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('disconnected from server');
});
推荐阅读
- laravel - laravel 图表没有从控制器获取数据
- javascript - 从 forEach 循环中获取返回值
- php - 如何使用 Responsive Filemananger 在 Ckeditor 中制作响应式图像
- java - 如何让 EditText 显示我的文本输入?
- couchbase-java-api - 如何在一次操作中将 Java 对象放入 Couchbase 的 JsonObject 中
- python - pandas - 检索使用 unstack 函数提取的数据的问题用 0 填充空值
- java - 在 Java 中处理分段上传流
- hidden-markov-models - 算法 - 从观察中找到 HMM 的顺序
- php - 无法在 PHP/HTML 中生成 SQL 查询
- laravel - laravel - 使用字符串参数重定向到外部域