繁体   English   中英

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

[英]How to send true via socket connections in node.js

我在Java中有一些代码可以从GPS获取位置。 在Java中将true写入输出流后,dos.writeBoolean(true); 我能够从GPS获取数据。 如果我通过假,那么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块

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);

样本节点块

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM