我正在使用Gnat Sockets软件包。 我已创建初始化与&一个服务器端的socket以下:如何检测与gnat.sockets.Receive_Socket读取套接字超时?
GNAT.Sockets.Create_Socket(...);
...
GNAT.Sockets.Set_Socket_Option
(Socket => Server,
Option => (Name => GNAT.Sockets.Receive_Timeout,
Timeout => Listner_Timeout));
...
GNAT.Sockets.Listen_Socket(...);
GNAT.Sockets.Accept_Socket(...);
一切都很好SOFAR ,但是何时该使用:
GNAT.Sockets.Receive_Socket(...);
我不知道如何检测套接字是否超时,或者在返回时读取一些数据。 我是否需要使用Check_Selector
方法(对于此用途看起来有点沉重,如果是这样,它与在Set_Socket_Option
调用中设置的超时进行交互)?
感谢,
如果你使用套接字连接到一些外部系统,那么是的,你必须处理所有这些。但是,如果这是针对您正在开发的应用程序中的某些系统内通信,请参阅[ZeroMQ](http://www.zeromq.org/)([Ada binding](http:// www .zeromq.org/bindings:ada))或[YAMI4](http://www.inspirel.com/yami4)。它们为您处理所有详细的套接字内容,让您专注于所需的通信/消息协议。我已经尽可能地采用了ZeroMQ,并且我在开源开发中的目标是再也不用编写套接字代码:-) –