读书人

【ClientSocket】SendBuf函数发送结构

发布时间: 2012-06-15 19:37:05 作者: rapoo

【ClientSocket】SendBuf函数发送结构体出错,上代码
先定义一个结构体

C/C++ code
struct sss{    int i;    double j;    ...//其他的东西,都是一些char类型    char data[2048];};

一个ClientSocket组件,发送这个结构体
C/C++ code
char* 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

[解决办法]
赵老师总结的很好。
专业一点的说法,是否就是传说中的 ---> 协议?
探讨

不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html

[解决办法]
判断下发送的数据包长度是不是与你要写的长度一致

读书人网 >C++

热点推荐