Ada 如何使用GNAT.sockets管理客户端连接?
这是一个聊天客户端/服务器程序。要进行广播,我必须保存每个连接的客户端,然后向每个客户端写入数据,对吗?管理客户的最佳实践是什么Ada 如何使用GNAT.sockets管理客户端连接?,ada,Ada,这是一个聊天客户端/服务器程序。要进行广播,我必须保存每个连接的客户端,然后向每个客户端写入数据,对吗?管理客户的最佳实践是什么 GNAT.Sockets.Accept_Socket( Server => Receiver, Socket => Connection, Address => Client ); Channel := GNAT.Sockets.Stream(Connection);
GNAT.Sockets.Accept_Socket(
Server => Receiver,
Socket => Connection,
Address => Client
);
Channel := GNAT.Sockets.Stream(Connection);
String'Write(Channel, "Welcome Message");
是的,你必须给每个客户写信。虽然有多播套接字可以为您解决一些问题 管理客户的最佳实践是让别人为你做这件事 我厌倦了反复编写socket代码,所以我简单地采用并编写了管理所有客户机/服务器、发布/订阅细节的方法
还有其他一些对Ada友好的协议,比如,也有同样的功能。我想您可以先使用
GNAT.Sockets.Socket\u Set\u Type
来保存感兴趣的套接字,即服务器套接字和所有当前连接的客户端套接字
使用GNAT.Sockets。选中_选择器
等待可读的事件发生,然后GNAT.Sockets。获取
以找到相关的套接字(或其中一个套接字);如果是服务器套接字,则连接了一个新的客户机,否则现有客户机中有一个要读取的输入
我在我的书中有一个这样的例子;但请注意,这不适用于其中一个客户端响应太慢以致写入被阻止的情况。从这种情况中恢复将更加复杂。谢谢你的回答。然而,由于我正处于学习阶段,我希望在没有任何“外部”库的情况下学习。它们肯定会在未来的项目中有用。