我正在使用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()
并且应用程序崩溃。
是否有任何方法(如例外或州代码)可以通知我连接是否成功?
答案 0 :(得分:1)
执行此操作的最佳方法是响应超时。 因此发送请求(带超时)然后等待超时响应。如果服务器在超时内没有响应,您可以尝试连接到下一个服务器。像这样:
if (client.TrySendFrame(TimeSpan.FromSeconds(2), jData) &&
client.TryReceiveFrame(TimeSpan.FromSeconds(2), out jData) )
{
// Server is online
}
else
{
// Server is down
}