如何关闭客户端连接并在NETMQ中返回呼叫?

问题描述 投票:1回答:1

我刚刚开始使用NETMQ REQ / RES模式从两端发送和接收请求响应。客户端来自IIS,服务器来自Windows服务。我的问题是何时停止服务并尝试了客户请求。客户端进入无限循环并且不返回。

服务器代码

using (var server = new ResponseSocket())
{
    server.Bind("tcp://10.150.0.242:5556");
    while (true)
    {
        try
        {
            // using (var client = ctx.CreateRequestSocket())
            {
                string fromClientMessage = server.ReceiveString();
                string result = DigitalSignInitialization(fromClientMessage);
                server.Send(result);
                Console.WriteLine("From Client: {0}", fromClientMessage);
            }
        }
        catch(Exception Ex) { server.Send("Failure"); }

    }
}

客户代码

using (NetMQContext ctx = NetMQContext.Create())
{ 
     using (var client = ctx.CreateRequestSocket())
     {
         //try
        // {
        //client.Connect("tcp://10.150.0.242:5556");
        client.Connect(strNCODE_ADDRESS);
                    client.Send(json);

        fromServerMessage = client.ReceiveString(new TimeSpan (0, 0, 0, 30));
                                    if(fromServerMessage != "Success")
        {
            fromServerMessage="Failure";

            return "<RESULT><DIGITAL_SIGNATURE>DIgital Signature Failed</DIGITAL_SIGNATURE></RESULT>";
        }
    }
}

代码无法返回。请先帮助我,谢谢

c# zeromq netmq
1个回答
0
投票

这是正常行为。如果其他端点断开连接,则0MQ套接字不会失败。相反,套接字Send方法将等待,直到服务器可用。如果不希望出现这种情况,则应使用dontWait方法的Send参数,或者重新设计从服务器轮询数据的整个方法。

© www.soinside.com 2019 - 2024. All rights reserved.