其实这个问百度一搜一大堆 。但是没有 找到我要的答案 ,现在的问题是服务端断开连接后 , 客户端就每间隔10秒去重连一次 ,然后等服务端回复连接时,会出现现下面这种情况,这是为什么 ,怎么解决 ,拜托各大佬给个思路
解决方案 »
- Parameters["ReturnValue"]不能用在SqlCmd.ExecuteScalar()?
- 忍不住高分求C#开窗模式的进度条查询问题
- C# 多个文件压缩成一个zip的问题
- c#调入外部exe并运行的问题
- visual stduio 2005 中添加 SQL2005的问题
- 为什么在工具箱内找不到system.drawing?
- 取布尔型字段并显示的问题
- 有没有人管——csdn的“显示导航栏”一直抱错,根本打不开。
- JSON序列化怎么把类名也加进去
- windows程序怎么做到类似像html中的frame框架
- 哪位大侠可以共享我一个用.Net(c#)实现数据挖掘-关联分析-Apriori算法的例子程序?
- 排柜复杂计算问题请教
你点开那个问题详细信息里面什么内容吧,或者直接上代码吧
///<summary>
///接收消息
///</summary>
private void ReceiveMessage()
{
//Socket socketClient = socketClientPara as Socket;
while (true)
{
try
{
//接受消息头(消息校验码4字节 + 消息长度4字节 + 身份ID8字节 + 主命令4字节 + 子命令4字节 + 加密方式4字节 = 28字节)
int HeadLength = 28;
//存储消息头的所有字节数
byte[] recvBytesHead = new byte[HeadLength];
//如果当前需要接收的字节数大于0,则循环接收
if (HeadLength > 0)
{
byte[] recvBytes1 = new byte[28];
//将本次传输已经接收到的字节数置0
int iBytesHead = 0;
//如果当前需要接收的字节数大于缓存区大小,则按缓存区大小进行接收,相反则按剩余需要接收的字节数进行接收
if (HeadLength >= recvBytes1.Length)
{
iBytesHead = socketClient.Receive(recvBytes1, recvBytes1.Length, 0);
}
else
{
iBytesHead = socketClient.Receive(recvBytes1, HeadLength, 0);
}
//将接收到的字节数保存
recvBytes1.CopyTo(recvBytesHead, recvBytesHead.Length - HeadLength);
//减去已经接收到的字节数
HeadLength -= iBytesHead; //接收消息体(消息体的长度存储在消息头的4至8索引位置的字节里)
byte[] bytes = new byte[4];
Array.Copy(recvBytesHead, 4, bytes, 0, 4);
int BodyLength = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(bytes, 0));
//存储消息体的所有字节数
byte[] recvBytesBody = new byte[BodyLength];
//如果当前需要接收的字节数大于0,则循环接收
if (BodyLength > 0)
{
byte[] recvBytes2 = new byte[BodyLength < 1024 ? BodyLength : 1024];
//将本次传输已经接收到的字节数置0
int iBytesBody = 0;
//如果当前需要接收的字节数大于缓存区大小,则按缓存区大小进行接收,相反则按剩余需要接收的字节数进行接收
if (BodyLength >= recvBytes2.Length)
{
iBytesBody = socketClient.Receive(recvBytes2, recvBytes2.Length, 0);
}
else
{
iBytesBody = socketClient.Receive(recvBytes2, BodyLength, 0);
}
//将接收到的字节数保存
recvBytes2.CopyTo(recvBytesBody, recvBytesBody.Length - BodyLength);
//减去已经接收到的字节数
BodyLength -= iBytesBody;
}
//一个消息包接收完毕,解析消息包
UnpackData(recvBytesHead, recvBytesBody);
}
}
catch (Exception)
{ txtMsg.AppendText("服务端已经断开连连接");
//重连的方法
ContentServer();
Thread.Sleep(10000);
}
}
}