简单问题!请各位帮助?传输结构体问题

1001781239 2003-12-10 08:52:49
我有一结构体
typedef struct _CLIENT_LOGIN
{
AnsiString strUser;
AnsiString strPass;
}CLIENT_LOGIN, *pCLIENT_LOGIN;
我要从客户端口传输到服务端口时:

CLIENT_LOGIN cLogin;
cLogin.strUser = "dfs";
cLogin.strPass = "asdfk";
Socket->SendBuf(&cLogin,sizeof(_CLIENT_LOGIN));
为何服务接收不到值:
服务端为:Socket->ReceiveBuf(&cLogin,sizeof(_CLIENT_LOGIN));
...全文
24 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pp616 2003-12-15
  • 打赏
  • 举报
回复
typedef struct _CLIENT_LOGIN
{
AnsiString strUser;
AnsiString strPass;
}CLIENT_LOGIN, *pCLIENT_LOGIN;

sizeof(LOGIN)没有意思
因为你的strUser 和 strPass的长度都不能确定。
应该把结构改成
typedef struct _CLIENT_LOGIN
{
char strUser[255]; //255为用户名的长度。不见得用255应该用一个最合适的值。
char strPass[50]; //50为密码的长度,如果你的程序使用的密码只有20位那就应该用20
}CLIENT_LOGIN, *pCLIENT_LOGIN;

然后
CLIENT_LOGIN clogin;
memset(&clogin,0x00,sizeof(CLIENT_LOGIN));
strcpy(clogin.strUser,"user");
strcpy(clogin.strPass,"password");
Socket->SendBuf(&clogin,sizeof(CLIENT_LOGIN));
vargent77 2003-12-15
  • 打赏
  • 举报
回复
Socket->SendBuf(&cLogin,sizeof(_CLIENT_LOGIN),sizeof(_CLIENT_LOGIN));
这样应该可以了,不知为什么,后面是两个长度才能发。
doudoushen 2003-12-11
  • 打赏
  • 举报
回复
是啊 贴出来吧 up
doudoushen 2003-12-10
  • 打赏
  • 举报
回复
我也在找这方面的资料 帮你up把
MartinWang 2003-12-10
  • 打赏
  • 举报
回复
如楼上所说,把你的连接过程写出来:)
zzbluecat 2003-12-10
  • 打赏
  • 举报
回复
使用SendBuf和ReceiveBuf时是否判断了返回值呢?如果发送失败,服务端当然收不到。

1,317

社区成员

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

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