如何确定客户端套接字的连接状态?

时间:2016-09-18 14:11:16

标签: .net zeromq netmq

我正在使用NetMQ套接字来执行客户端 - 服务器通信。我有一个侦听端口5555的服务器和一个客户端.bind() - s。

这是我的代码示例:

using (NetMQContext ctx = NetMQContext.Create())
{
     using (var client = ctx.CreateRequestSocket())
     {                            
           client.Connect("tcp://127.0.0.1:5555");                            
           client.SendFrame(jData);                            
     }
}

如果客户端找不到任何侦听该端口的服务器,我想要与用户进行通信。

实际发生的情况是,如果没有服务器侦听该端口,则不会引发异常,并且调用.sendFrame()并且应用程序崩溃。

是否有任何方法(如例外或州代码)可以通知我连接是否成功?

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是响应超时。 因此发送请求(带超时)然后等待超时响应。如果服务器在超时内没有响应,您可以尝试连接到下一个服务器。像这样:

if (client.TrySendFrame(TimeSpan.FromSeconds(2), jData) && 
    client.TryReceiveFrame(TimeSpan.FromSeconds(2), out jData) ) 
{
    // Server is online
}
else 
{
    // Server is down
}