我使用异步接收消息的时候 发现只要一对SocketAsyncEventArgs的Buffer进行操作 后面的代码好像就不执行了 然后我就加了Debug 发现连日志输出都没有 好像陷入了某种奇怪的循环 我不太懂网络编程 想问问有没有人知道一获取Buffer后面的代码就不执行了是什么Bug 明明我的服务器端都没有这种问题
private void Process_Receive(SocketAsyncEventArgs e)
{
Debug.Log(111);
if (e.SocketError == SocketError.Success & e.BytesTransferred > 0)
{
//接受信息成功
Debug.Log(111);
Buffer.BlockCopy(recEvent.Buffer,0, data, 0, recEvent.BytesTransferred);
Debug.Log(recEvent.BytesTransferred);
Debug.Log(222);
cache.AddRange(data);
Debug.Log(222);
while (true)
{
Debug.Log(111);
bool result = netMsg.DecodeData(ref cache);
if(!result)
{
StartReceive();
return;
}
Debug.Log(netMsg.mainCode);
Debug.Log(netMsg.subCode);
//TODO 接下来要处理每一个收到的消息
switch (netMsg.mainCode)
{
case MainCode.Account:
accountHandler.Receive(this, netMsg.subCode, netMsg.value);
break;
case MainCode.Match:
break;
case MainCode.Chat:
break;
case MainCode.Fight:
break;
}
}
}
StartReceive();
}