服务器端部分代码如下:
struct PACKAGE_QueryUser
{
char userno[11];
char username[31];
char userphone[12];
char useraddress[51];
char useropendate[11];
char meterno[11];
char userstate[2];
char openwsno[5];
char operatorno[4];
};//定义结构体,存放从数据库中查询出的数据
PACKAGE_QueryUser *RQueryUser=(PACKAGE_QueryUser *)malloc(60*sizeof(PACKAGE_QueryUser));
PACKAGE_QueryUser *oRQueryUser=RQueryUser;
assert(RQueryUser!=NULL);
QueryUser(RQueryUser);//从数据库中查询数据的函数,RQueryUser结构体存放查询结果
int nsd=send(ClientSocket, (char *)RQueryUser,sizeof(RQueryUser)+1, 0);//能这么用吗???
printf("nsd=%d\n",nsd);
if(nsd<0)
{
closesocket(ClientSocket);
exit(-1);
}
closesocket(ClientSocket);
exit(0);
struct PACKAGE_QueryUser
{
char userno[11];
char username[31];
char userphone[12];
char useraddress[51];
char useropendate[11];
char meterno[11];
char userstate[2];
char openwsno[5];
char operatorno[4];
};//定义结构体,存放从数据库中查询出的数据
PACKAGE_QueryUser *RQueryUser=(PACKAGE_QueryUser *)malloc(60*sizeof(PACKAGE_QueryUser));
PACKAGE_QueryUser *oRQueryUser=RQueryUser;
assert(RQueryUser!=NULL);
QueryUser(RQueryUser);//从数据库中查询数据的函数,RQueryUser结构体存放查询结果
int nsd=send(ClientSocket, (char *)RQueryUser,sizeof(RQueryUser)+1, 0);//能这么用吗???
printf("nsd=%d\n",nsd);
if(nsd<0)
{
closesocket(ClientSocket);
exit(-1);
}
closesocket(ClientSocket);
exit(0);
int nsd=send(ClientSocket, (char *)RQueryUser,sizeof(PACKAGE_QueryUser)*xxx_count, 0);
sizeof(RQueryUser)只有4个字节。
谢谢你的建议,现在因为长度是不固定的,实际上是从数据库中取出的记录条数.这个问题还没有找到比较好的办法.
QueryUser()函数可以返回记录的条数,但是有个矛盾,就是必须先malloc,再调用QueryUser()函数,所以不知道怎么在malloc的时候先确定长度.希望更多的人近来讨论下