socket异步接收
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……)?
如出现应该如何处理
{
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……)?
如出现应该如何处理
...全文
相关推荐
异步接收socket
对asyncsocket没有太多了解。用的是新建一个类把socket作为参数传送给类,实现的异步接收socket。这跟unix的实现方式比较象吧^_^
Socket异步接收、调试
可用于Socket异步接收和报文调试,使用C#开发,运行需要.Net Framework库。
C#异步socket接收组件和调用示例
C#异步socket接收组件和调用示例,很好很强大的异步socket组件,共享给大家。
C__实现的多线程异步Socket数据包接收器框架
C__实现的多线程异步Socket数据包接收器框架
C#实现的多线程异步Socket数据包接收器框架[整理].pdf
C#实现的多线程异步Socket数据包接收器框架[整理].pdf


