求助,关于用sendbuf和receivebuf收发一个结构体变量的!

icrcapple 2005-05-19 02:20:29
struct BrushType
{
bool start;//当为真是表示是第一点,为假是表示第二点此时画图
int x,y;
TColor cl;
//...
}//BrushType里边就这几个变量比较重要
BrushType *bt=new BrushType();
在image的mouseDown事件里边有这样的代码
IMage1->canvas->moveTo(X,Y);
bt->x=X,bt->y=Y;bt->start=true;
//...对其他变量扶植省略
CLientSocket1->socket->sendbuf(bt,sizeof(BrushType));
同样在mouseup事件里边也有类似的一段代码,就是bt->start=false;而已

注:我这样做的目的是为了在服务器上从现客户端的画图过程!


服务器上代码:
//同样也定义一个相同的brushtype的变量也取为bt
clientread事件:
serversocket1->Socket->ReceiveBuf(bt,sizeof(brushtype));
if(bt->start=true)
{
//MoveTo(bt->x,bt->y);
}
else
{
//LineTo(bt->x,bt->y);
}
这样看上去很简单的代码我看不出有什么错误,可是编译通过,运行的时候就是出现问题,不是说是套接子的问题就是其他的!
我郁闷死了,请高手帮我解答,分析一下!
...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjyzp 2005-05-20
  • 打赏
  • 举报
回复
通上
铖邑 2005-05-19
  • 打赏
  • 举报
回复
TCP是基于流的数据收发机制,发送一个完整的数据,可能分成几次接收。一般如果数据发送不是太快并且结构不是太大的话,发送总是成功的,每次发送一个结构这样的做法基本上没有什么问题;但是接收数据的时候是有问题的,用一个结构来接收数据,有可能接收成功,这时就可以通过按结构访问各个数据域,但也有可能只收到一部分的数据,即收到数据的长度小于结构的尺寸,这也是经常发生的,这时访问各个数据域将是错误的。
happyct 2005-05-19
  • 打赏
  • 举报
回复
你用什么模式发送和接收?

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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