发送数据的时候有零数据就截断了,怎么解决阿?

bauhaus 2003-04-04 10:25:55
我的客户端于服务器端如果发送普通数据没有问题,但是数据里面包含零就会截断,应该怎么解决阿?谢谢了
...全文
33 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
bauhaus 2003-04-05
  • 打赏
  • 举报
回复
问题是接收到字节数都对,因为com里面没有char*,只有bstr也就是lpctstr
可是lpctstr在拷贝数据的时候就会发生我说的问题,如果发送普通的字符串是一点
问题都没有的,也就是如何在com里面完成char*可以完成的数据发送接收的功能,大家
认为呢
csdn_viking 2003-04-04
  • 打赏
  • 举报
回复
你怎么知道数据没有被发送过去????如果你接受到后把他当字符串来显示的话,0后面的当然看不到。
bauhaus 2003-04-04
  • 打赏
  • 举报
回复
还是不行 啊
BinaryTreeEx 2003-04-04
  • 打赏
  • 举报
回复
struct a
{
int b;
char c[100];
...
}
struct a d;

// 设置 d 的内容
...

// 发送
memcpy(pData, &d, sizeof(struct a));
Send(pData, sizeof(struct a));

试试看。
bauhaus 2003-04-04
  • 打赏
  • 举报
回复
比如说:
WORD cmd=0x0001;
char *pData=new char[100];
memset(pData,0,100);
memcpy(pData,&cmd,2);
memcpy(&pData[2],"192.168.0.123",13);
memcpy(&pData[18],"hello",5);
Send(pData,23);
接收的时候只能收到0001后面的数据全部收不到,怎么解决阿?
以前做的时候记得可以的,不过现在怎么事都不行
如果这样:
char *pData="hello";
Send(pData,5);
接收就没有问题
chneptune 2003-04-04
  • 打赏
  • 举报
回复
数据为0的话你的发送函数应该不成功吧?
Tasehouny 2003-04-04
  • 打赏
  • 举报
回复
你的问题描述的不清楚,所以不好回答。
bauhaus 2003-04-04
  • 打赏
  • 举报
回复
怎么没有人回答啊?
Sander 2003-04-04
  • 打赏
  • 举报
回复
如果接收到零字节时,是认为对方断开socket啦,
你要在发送时判断数据是否为空。
csdn_viking 2003-04-04
  • 打赏
  • 举报
回复
同意 catyou(雨后春笋)
BinaryTreeEx 2003-04-04
  • 打赏
  • 举报
回复
把你接收的代码贴出来。
catyou 2003-04-04
  • 打赏
  • 举报
回复
COM与普通的socket有什么不同吗?没看出来

一、接收的字节长度对不对?
二、如果接收到数据, 以十六进制打印, 不要以字符串打印,看看实际的数据
bauhaus 2003-04-04
  • 打赏
  • 举报
回复
哥们,重点不在于那里,而在于有零的时候我解析出来的都不对,我的意思有人用过com吗?
其实正常接收是没有问题的,这个和send返回多少没有关系
csdn_viking 2003-04-04
  • 打赏
  • 举报
回复
你收到了什么???

你怎么知道没有收到?send()返回指是多少????
bauhaus 2003-04-04
  • 打赏
  • 举报
回复
问题是我把socket封装在COM里面了,没有办法调试
不过:
WORD cmd=0x0001;
char *pData=new char[100];
memset(pData,0,100);
memcpy(pData,&cmd,2);
memcpy(&pData[2],"192.168.0.123",13);
memcpy(&pData[18],"hello",5);
Send(pData,23);
这样发送就不可以
但是把cmd从0x0001换成0x0101或者其他的只要高位或者低位不为零就可以
很纳闷阿
有没有遇到过这种情况的人啊?
着急阿
yydyqy 2003-04-04
  • 打赏
  • 举报
回复
Send()的返回值是23吗?如果是,
int nRet = -1;
char szRecv[100];
memset(szRecv, 100, 0);
nRet = Receive(szRecv, 100, 0);
nRet的值不会还是-1吧.

18,356

社区成员

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

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