0

我正在使用 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()会调用并且应用程序崩溃。

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

4

1 回答 1

1

最好的方法是响应超时。所以发送一个请求(超时),然后等待超时响应。如果服务器在超时时间内没有响应,你可以去尝试连接下一个服务器。像这样:

if (client.TrySendFrame(TimeSpan.FromSeconds(2), jData) && 
    client.TryReceiveFrame(TimeSpan.FromSeconds(2), out jData) ) 
{
    // Server is online
}
else 
{
    // Server is down
}
于 2016-09-20T07:36:25.290 回答