【ClientSocket】SendBuf函数发送结构体出错,上代码,该怎么处理
【ClientSocket】SendBuf函数发送结构体出错,上代码先定义一个结构体C/C++ codestruct sss{int idouble j.
【ClientSocket】SendBuf函数发送结构体出错,上代码
先定义一个结构体
C/C++ codestruct sss{ int i; double j; ...//其他的东西,都是一些char类型 char data[2048];};
一个ClientSocket组件,发送这个结构体
C/C++ codechar* cmd = "alskdfjl2k3j4l2k3j4l2asl";//struct sss mysss;mysss.i = 1;mysss.j = 2;...//其他的东西,都是一些char类型sprintf(mysss.data, "%s", cmd);int sendsize = N;//这里我会计算这个结构体的长度,不用怀疑ClientSocket->Socket->SendBuf((char*)&mysss, sendsize);
服务器代码不写了,及其简单的几行。
问题是:这个是我用BCB写的一个ActiveX,如果直接用IE浏览器调试的话,没有问题,如果注册到VC里调用,则发送不成功;
还有,发送不成功分几种情况:1、如果data长度是128,则没有问题
2、如果data长度是512,发送第一次能接受到,第二次出错
3、如果data长度是1024,第一次接收就失败,接收为空
不知道是什么啊
[解决办法]send改为
int n = 0;
while ( n < len )
{
int c = send ( &buf[n]
if ( c > 0 )
n += c
}
[解决办法]不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html
[解决办法]赵老师总结的很好。
专业一点的说法,是否就是传说中的 ---> 协议?
[解决办法]判断下发送的数据包长度是不是与你要写的长度一致