客户端代码:
var client = new ConnectionClient.AsyncBinarySocketClient(8192, 8192, 3000, 3000);
client.RegisterServerNode("1122", new System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), 8888));
byte[] bytes = null;
string str = "njyang110"+"\t"+"123456";
bytes = Encoding.Unicode.GetBytes(ConnectionBase.SerializeHelper.StringToBinaryString(str));
for (int i = 0; i < 12; i++)
{
client.Send("Login", bytes, res => BitConverter.ToInt32(res.Buffer, 0)).ContinueWith(c =>
{
if (c.IsFaulted)
{
Console.WriteLine(c.Exception.ToString());
return;
}
});
System.Threading.Thread.Sleep(50);
}
client.UnRegisterServerNode("1122");
client.Stop();
Console.ReadLine();
上面的代码 可以把消息循环发送完成,假如把for循环往上面移动一层 ,只能发送成功一次消息 然后就就开始超时了。客户端有做短线重新链接的功能,但是也是现实超时。请指点这是问什么呢
修改后的代码如下【修改后超时】
for (int i = 0; i < 1200; i++)
{
var client = new ConnectionClient.AsyncBinarySocketClient(8192, 8192, 3000, 3000);
client.RegisterServerNode("主服务器", new System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), 8401));
byte[] bytes = null;
string str = "njyang110"+"\t"+"123456";
bytes = Encoding.Unicode.GetBytes(ConnectionBase.SerializeHelper.StringToBinaryString(str));
client.Send("Login", bytes, res => BitConverter.ToInt32(res.Buffer, 0)).ContinueWith(c =>
{
if (c.IsFaulted)
{
Console.WriteLine(c.Exception.ToString());
return;
}
});
System.Threading.Thread.Sleep(50);
client.UnRegisterServerNode("主服务器");
client.Stop();
}
Console.ReadLine();
解决方案
35
90%是服务端accept一次然后就没下文了
5
client的定义不能放在循环里面,
否则每一轮就会生成一个新的client,
前一段代码正常是连接对象生成一次,多次使用