如何使用套接字将node.js与ada连接起来
How to connect node.js with ada using sockets?
我正在尝试使用套接字将我的Ada应用程序与node.js服务器连接起来。我已经设法将数据从Ada发送到node.js,但在接收数据方面仍然存在问题。
这是我的Ada任务:
task body Send_Task is
use Ada.Numerics.Float_Random;
Next : Ada.Real_Time.Time;
Period : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Milliseconds(5000);
Interval : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Milliseconds(30);
Gen : Generator;
Address : Sock_Addr_Type;
Socket : Socket_Type;
Channel : Stream_Access;
begin
Reset(Gen);
Next := Ada.Real_Time.Clock + Interval;
Address.Addr := Addresses (Get_Host_By_Name (Host_Name), 1);
Address.Port := 9000;
Create_Socket (Socket);
Set_Socket_Option (Socket, Socket_Level, (Reuse_Address, True));
Connect_Socket (Socket, Address);
loop
delay until Next;
Channel := Stream (Socket);
String'Output(Channel, Message'Img);
Put_Line("Input " & String'Input(Channel));
Next := Next + Period;
end loop;
exception
when E:others => Put_Line("Error: Task Errors");
Put_Line(Exception_Name (E) & ": " & Exception_Message (E));
end Send_Task;
这是我的node.js服务器:
require('net').createServer(function (socket) {
console.log("connected");
socket.on('data', function (data) {
console.log(data.toString());
});
socket.on('connection', function(){
console.log("test2");
socket.write("900.0");
});
console.log("test1");
socket.write("900.0");
}).listen(9000);
node.js服务器的控制台输出:
connected
test1
0.00 //value of Message'Img
阿达的任务没有输出。任务中的循环似乎已经停止,等待来自node.js的消息。如果没有Put_Line("Input " & String'Input(Channel));
行,一切都很好(当然除了从node.js获取消息)。谢谢你的帮助!
您的问题是服务器没有发送正确格式的数据。参考手册中的13.13.2(26/3)规定String'Input
首先读取字符串的边界,然后读取其内容。
您可能希望使用String'Write
发送,使用Character'Read
接收(除非您有定义明确的消息长度)。
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 如何使用密码检测网络中的状态连接
- 如何处理node.js节点mongodb中的连接和查询队列
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- Twilio-显示所有连接参与者的远程参与者视频
- 操作放置在画布上的元素之间的连接
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- jQuery UI可排序-多连接列表拖动
- 如何使用offer/answer交换来自两个对等连接的流
- 在Qualtrics中,介绍如何动态连接两个滑块
- 使用优化器在慢速连接上加载main.js时需要js超时
- 如果连接类型为none,则Javascript Function Only警报
- GTK百老汇支持同时连接
- 在node.js中写入ECONNRESET错误和套接字连接检查
- 如何将所有JS文件连接到一个文件夹中
- 在cordova android应用程序中连接数据库
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- SignalR客户端启动连接时如何设置用户
- 如何使用套接字将node.js与ada连接起来