症状:发送和接收到的文件数据内容不一致
解决方法:用dbgview显示发送接收的包序列,发送包序列不一致
问题原因:发送端是异步发送,没有等待发送完毕。
接收端虽然是异步接收,但是会等待一个数据包接收完。
ui = pentry_points->pVirtualChannelWrite(popen_handle,
imsg_write,
sizeof(TYPE_PACKET),
NULL);
// 等待写操作完成
if ( WaitForSingleObject(hwait_writen, INFINITE) == WAIT_FAILED )
{
DisplayError(TEXT("WaitForSingleObject"));
}
case CHANNEL_EVENT_WRITE_COMPLETE:
{
// 写操作完成,设置通知事件
if ( SetEvent(hwait_writen) == 0)
{
DisplayError("SetEvent");
}
}
本文介绍了一个文件传输过程中数据内容不一致的问题及解决方法。通过使用dbgview工具对比发送和接收的数据包序列,发现发送端未等待发送操作完成就进行下一次发送,导致数据包不一致。文中提供了解决该问题的具体代码示例。
172万+





