socket异步接收

sunrain_leo sunrain_leo 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
public static void ReadCallback(IAsyncResult objIAsyncResult)
{
StateObject objStateObject = (StateObject)objIAsyncResult.AsyncState;
Socket objSocketHandler = objStateObject.objSocketWork;
string strIP = objSocketHandler.RemoteEndPoint.ToString();
int intBytesRead = objSocketHandler.EndReceive(objIAsyncResult);

if(intBytesRead > 0)
{
string strTemp = "";
byte[] btReceive = new byte[intBytesRead];
for(int i=0;i<intBytesRead;i++)
{
btReceive[i] = objStateObject.btBuffer[i];
/// 一定要转换位16进制的
strTemp += btReceive[i].ToString("0X");
}
/// 解析数据包内容
PackUnpackData.clsPackUnpackData.ddrDealData(objSocketHandler,strTemp);

objSocketHandler.BeginReceive(objStateObject.btBuffer,0,StateObject.intBufferSize,0,new AsyncCallback(ReadCallback),objStateObject);
}
}
对于以上,如果数据包长度过大,缓冲区只设置位512,并且数据包设置起始符和终止符,如何接收一条完整的数据之后再对数据包进行整体处理

例如:
数据包格式:AAAA……BBBB,长度大于512
当收到完整的数据AAAA……BBBB之后再将其送到其他函数中进行处理

问:这样的情况会不会出现(缓冲区收到前512个字节后,再此收到剩余的之后,新的数据包紧跟着剩余数据包,如下……BBBBAAAA……)?
如出现应该如何处理
...全文
评论 5
收藏 已收藏
分享
返回顶部
sunrain_leo
C# 111,129 成员 642,538 内容