我刚刚开始使用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>";
}
}
}
代码无法返回。请先帮助我,谢谢
这是正常行为。如果其他端点断开连接,则0MQ套接字不会失败。相反,套接字Send
方法将等待,直到服务器可用。如果不希望出现这种情况,则应使用dontWait
方法的Send
参数,或者重新设计从服务器轮询数据的整个方法。