PUCHAR指针漂浮不定

tuiger2003 2003-07-05 10:57:50
大家好,我在接收数据包时,发现数据包的指针(类型为PUCHAR)一直漂浮不定,有时正确,有时错误。举例如下:
PUCHAR data;//(指向数据包当前解析位)
CString str;
nLen = data - m_pDataBegin; //数据包头指针
nLen = m_nTotalLen -nLen; //数据包总长
if (nLen == 0)
return;
char *pstrbuf = str.GetBuffer(nLen + 1);
memcpy(pstrbuf, data, nLen);
pstrbuf[nLen] = 0;
str.ReleaseBuffer();
str.MakeLower();

我以此得到数据包最终的Http串,可发现 data执行一句变化一次,感觉漂浮不定,不知大家有没有这种经历,如何能让PUCHAR类型稳定下来?
...全文
205 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
funcy333 2003-07-14
  • 打赏
  • 举报
回复
你需要重新开数据缓冲区,用wpcap的不行。
farfh 2003-07-11
  • 打赏
  • 举报
回复
建议统一使用unicode
Richuen22 2003-07-10
  • 打赏
  • 举报
回复
真的汗颜,竟将UCHAR看为TCHAR,不好意思了。
这就不是UNICODE码的问题,可能是UCHAR无符号字符和char有符号字符不统一的问题。
将PUCHAR data;//
改为 char* data;//
试一试。
Richuen22 2003-07-07
  • 打赏
  • 举报
回复
统一为UNICODE码较佳。
char *pstrbuf
为UCHAR *pstrbuf
或用MultiByteToWideChar或WideCharToMultiByte来转换ANSI和UNICODE码。
Richuen22 2003-07-06
  • 打赏
  • 举报
回复
写错了,是UNICODE码。
Richuen22 2003-07-06
  • 打赏
  • 举报
回复
改正:你要将两者统一。
Richuen22 2003-07-06
  • 打赏
  • 举报
回复
昏,PUCHAR是UNIVODE的,char *是ANSI的,当然有问题了,你要将两都统一。
funcy333 2003-07-06
  • 打赏
  • 举报
回复
好像没有高手呀?
tuiger2003 2003-07-06
  • 打赏
  • 举报
回复
怎么统一法呢?
而且我是参考一个程序写的,人家的办法和我一样,可很稳定呀
tuiger2003 2003-07-05
  • 打赏
  • 举报
回复
up
tuiger2003 2003-07-05
  • 打赏
  • 举报
回复
大家好,我在接收数据包时,发现数据包的指针(类型为PUCHAR)一直漂浮不定,有时正确,有时错误。举例如下:
PUCHAR data;
.... 采集包到data中//(指向数据包当前解析位)
CString str;
int nLen;
nLen = data - m_pDataBegin; //m_pDataBegin为数据包头指针
nLen = m_nTotalLen -nLen; //m_nTotalLen为数据包总长
if (nLen == 0)
return;
char *pstrbuf = str.GetBuffer(nLen + 1);
memcpy(pstrbuf, data, nLen);
pstrbuf[nLen] = 0;
str.ReleaseBuffer();
str.MakeLower();

我以此得到数据包最终的Http串,可发现 data执行一句变化一次,感觉漂浮不定,不知大家有没有这种经历,如何能让PUCHAR类型稳定下来?
tuiger2003 2003-07-05
  • 打赏
  • 举报
回复
简而言之,就是PUCHAR与CString之间的转换问题,如何正确转换呢?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧