sockets - 如何关闭等待服务器套接字监听的任务?

标签 sockets ada

我有一个用Ada编写的程序(尽管为此,我对任何解决方案都感兴趣)。它有一个没有sigkill就不会关闭的任务(该程序处理SIGUSR1),因为它正在等待创建的服务器套接字。 SIGUSR1可以正确处理,但是除非将某些内容输入套接字,否则此任务不会终止,然后它可以检查关闭状态并正常关闭。但是我想这样做而不必在套接字上填充数据。如果有人知道这样做的好方法,那就太好了。到目前为止,不适当的建议是超时和重新打开套接字之类的事情,因为这可能会干扰套接字的使用。

最佳答案

我假设您正在使用GNAT Ada编译器,并且在使用该编译器时,有一个名为GNAT.Sockets的特定于编译器的程序包,这是用于套接字的跨平台API。为了能够很好地关闭应用程序,此软件包的预期用途是使用GNAT.Sockets.Check_Selector过程。套接字读取器任务使用Check_Selector来知道是否有要在调用Receive_Socket之前从套接字读取的数据。另一个任务可以通过调用Abort_Selector来中止套接字读取器任务的阻塞调用Check_Selector。我希望这会为您指明正确的方向。

关于sockets - 如何关闭等待服务器套接字监听的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54710718/

相关文章:

c - Tcp 服务器关闭卡在 TIME_WAIT,无法再次在同一端口上打开服务器

javascript - 使用 native 套接字在 Android 中实现 WebSocket

sockets - 多个 http.Requests 给出 "can' t 分配请求的地址,“除非加速

compiler-construction - 如何使用 APEX 编译器将 Ada 代码从 Sun Solaris 10 迁移到 11

this - Ada 中有 "this"关键字吗?

ada - 使用导出的函数编译未引用的包

objective-c - 在 Cocoa 中使用 CFSocket/CFStream 时如何设置 SSL 密码?

linux - 套接字监听器(在 Linux 上)

ada - C++ 中#define 的 Ada 等价物是什么?

gcc - 将 math.h 与 gprbuild 链接起来