gpt4 book ai didi

ada - 如何使用 GNAT.sockets 管理客户端连接?

转载 作者:行者123 更新时间:2023-12-04 20:31:15 24 4
gpt4 key购买 nike

这是一个聊天客户端/服务器程序。要进行广播,我必须保存每个连接的客户端,然后写入每个客户端,对吗?管理客户的最佳实践是什么?

    GNAT.Sockets.Accept_Socket(
Server => Receiver,
Socket => Connection,
Address => Client
);
Channel := GNAT.Sockets.Stream(Connection);
String'Write(Channel, "Welcome Message");

最佳答案

我认为您可能首先使用 GNAT.Sockets.Socket_Set_Type 来保存感兴趣的套接字,即服务器套接字和所有当前连接的客户端套接字。

使用 GNAT.Sockets.Check_Selector 等待直到发生可读的事情,然后使用 GNAT.Sockets.Get 找到相关的套接字(或其中一个套接字);如果是服务器套接字,则新客户端已连接,否则现有客户端之一有输入要读取。

我在 Embedded Web Server 中有一个这种方法的例子;但请注意,这不涉及其中一个客户端响应速度太慢以至于写入被阻塞的情况。从那种情况中恢复会更加复杂。

关于ada - 如何使用 GNAT.sockets 管理客户端连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21559111/

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