gpt4 book ai didi

java - 如何通过node.js中的套接字连接发送true

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:23 24 4
gpt4 key购买 nike

我有一些java代码可以从GPS获取位置。在 java dos.writeBoolean(true); 中将 true 写入输出流后;我能够从 GPS 获取数据。如果我传递 false 那么 GPS 设备将不会发送数据。以同样的方式,我在 node.js 中实现这一点,但每次我在连接中写入 true (connection.write(true)) 时都会收到错误。

net.js:614
throw new TypeError('invalid data');
^
TypeError: invalid data
at Socket.write (net.js:614:11)
at Socket.<anonymous> (/home/daffolap-301/TestProjects/chat-example/server.js:451:24)
at Socket.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:764:14)
at Socket.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:426:10)
at emitReadable (_stream_readable.js:422:5)
at readableAddChunk (_stream_readable.js:165:9)
at Socket.Readable.push (_stream_readable.js:127:10)
at TCP.onread (net.js:528:21)

Process finished with exit code 8

我该如何写true,我应该使用Buffer还是其他东西?

提前致谢。

下面是 java 和 Node.js 的示例代码-

示例 Java block

ServerSocket serverSocket = new ServerSocket(port);
Socket moduleSocket=serverSocket.accept();
DataInputStream dis = new DataInputStream(moduleSocket.getInputStream());
DataOutputStream dos = new DataOutputStream(moduleSocket.getOutputStream());
dos.writeBoolean(true);
byte packet[] = ByteWrapper.unwrapFromStream(dis);
if(packet == null){
System.out.println((new StringBuilder("Closing connection: ")).append(moduleSocket).toString());
break;
}
AvlData decoder = CodecStore.getInstance().getSuitableCodec(packet);
AvlData decoded[] = decoder.decode(packet);
AvlData aavldata[];
int j = (aavldata = decoded).length;
for(int i = 0; i < j; i++){
AvlData avlData = aavldata[i];
System.out.println("i>>"+i+"---"+avlData);
}
dos.writeInt(7);

示例 Node block

var net = require('net');
net.createServer(function (connection) {
connection.on('data', function (data) {
connection.write(true)
});
connection.on('end', function () {
});
}).listen(3001);

最佳答案

你这样做:

var net = require('net');
net.createServer(function (connection) {
connection.on('data', function (data) {
connection.write(new Buffer([1]))
});
connection.on('end', function () {
});
}).listen(3001);

参见https://docs.nodejitsu.com/articles/advanced/buffers/how-to-use-buffers了解更多详情。

如果您需要发送更多数据类型(例如 Integer),您需要执行类似于 DataOutputStream ( http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/io/DataOutputStream.java#DataOutputStream.writeInt%28int%29 ) 中的 java 源中发生的操作。这意味着对于 Integer(30),您使用 Buffer([0, 0, 0, 30])。

关于java - 如何通过node.js中的套接字连接发送true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32558193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com