这个问题结合网络和画图!使用sendbuf和receivebuf传送结构体变量时出现在的问题,请高手帮忙分析

icrcapple 2005-05-19 02:22:59
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);
}
这样看上去很简单的代码我看不出有什么错误,可是编译通过,运行的时候就是出现问题,不是说是套接子的问题就是其他的!
我郁闷死了,请高手帮我解答,分析一下!
...全文
110 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maconel 2005-05-20
  • 打赏
  • 举报
回复
1、
为什么要用new来建立结构实例呢,这样就可以。
BrushType bt;
bt.xxx = xxx;
...
sendbuf(bt,sizeof(bt));

2、
结构中不能有指针型的变量,如
struct BrushType
{
char* p;
};
这样发送出去的只是p的地址而不是内容。

3、
应在结构中设置一个变量来做校验,比如
struct BrushType
{
int nSize;
};

BrushType bt;
bt.xxx = xxx;
...
bt.nSize = 包长;
sendbuf(...);

接收后判断是否符合来确定有没有丢失数据。
peter2108 2005-05-20
  • 打赏
  • 举报
回复
_bt2=bt;应为_bt2=(BYTE *)bt;
peter2108 2005-05-20
  • 打赏
  • 举报
回复
接收变为如下可能更好:
BrushType *bt=new BrushType();
BYTE _bt[2048],*_bt2=NULL;
int i=0;

i=CLientSocket1->socket->ReceiveBuf(_bt,sizeof(BrushType));
_bt2=bt;
if (i>=sizeof(BrushType)){
i=sizeof(BrushType);
}else{
//在此你最好判断一下收到的字节数是否你所期望的
}
for (k=0;k<i;k++){
_bt2[k]=_bt[k];
}
然后就可以访问bt了
peter2108 2005-05-20
  • 打赏
  • 举报
回复
改为如下看看:
1.发送
BrushType *bt=new BrushType();
BYTE *_bt=NULL;
...填充bt
_bt=(BYTE *)bt;
CLientSocket1->socket->sendbuf(_bt,sizeof(BrushType));
2.接收
BrushType *bt=NULL;
BYTE _bt[2048];
CLientSocket1->socket->sendbuf(_bt,sizeof(BrushType));
bt=(BrushType *)_bt;
然后就可以访问bt了
tjyzp 2005-05-20
  • 打赏
  • 举报
回复
是你自己 多用了点东西,我也说不明白为什么多了就出错,我在另一个帖子上写了
huabihan 2005-05-19
  • 打赏
  • 举报
回复
问题和代码都全部贴出来啊???
mmking33 2005-05-19
  • 打赏
  • 举报
回复
同意它出问题,也的确出问题了,已阅
icrcapple 2005-05-19
  • 打赏
  • 举报
回复
我也想象不出会有问题,但是的确有问题,郁闷死了
constantine 2005-05-19
  • 打赏
  • 举报
回复
到底出了什么问题你也说清楚啊,运行是出问题,什么问题我可想不出来
icwin 2005-05-19
  • 打赏
  • 举报
回复
up
铖邑 2005-05-19
  • 打赏
  • 举报
回复
运行的时候有什么样的问题?建议多跟踪程序,定位问题的根源,才好解决问题

1,317

社区成员

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

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