为何在同一台机子上传递信息,服务器接收的信息为空???顶者有分!!!!
客户端主要代码如下:
//用户信息的结构
typedef struct
{
long id;
char nickname[20];
char sex[10];
int age;
char address[50];
char password[20];
}USER_INF,*LPUSER_INF;
SOCKET sClient;
SOCKADDR_IN inetAddr;
USER_INF userInf;
sClient=socket(AF_INET, SOCK_STREAM, 0);
inetAddr.sin_addr.s_addr=inet_addr("127.0.0.1"); //联接本机的IP
inetAddr.sin_family=AF_INET;
inetAddr.sin_port=htons(SERVER_PORT);
if(connect( sClient, (struct sockaddr *)&inetAddr, sizeof (inetAddr)) == SOCKET_ERROR)
{
AfxMessageBox("注册失败:不能连接Net服务器");
return ;
}
UpdateData(TRUE);
m_cbSex.GetLBText(m_cbSex.GetCurSel(), m_strSex);
if(m_strPwd != m_strVerifyPwd)
{
AfxMessageBox("密码与确认密码不一致");
return ;
}
if(m_strNickname == _T("") || m_nAge==0 || m_strAddress==_T(""))
{
AfxMessageBox("请填充所有选项");
return ;
}
memset(&userInf,0,sizeof(USER_INF));
userInf.id = 0;
strcpy(userInf.nickname, (LPCTSTR)m_strNickname);
strcpy(userInf.sex, (LPCTSTR)m_strSex);
userInf.age = m_nAge;
strcpy(userInf.address, (LPCTSTR)m_strAddress);
strcpy(userInf.password, (LPCTSTR)m_strPwd);
//send "REGT"信息
memset(buff,0,sizeof(buff));
sprintf(buff,"%s","REGT");
if(send(sClient,buff,sizeof(buff),0) == SOCKET_ERROR)
{
AfxMessageBox("注册失败:REGT 信息 send 出错");
closesocket(sClient);
return ;
}
//send userInf
if(send(sClient,(char *)&userInf,sizeof(USER_INF),0) == SOCKET_ERROR) //USER_INF userInf已被赋值
{
AfxMessageBox("注册失败:REGT userInf send 出错");
closesocket (sClient);
return ;
}
服务端主要代码如下:
//保存在线用户的结构
typedef struct
{
char ip[16]; //用户的IP地址
SOCKET sock;
UINT currentnumer; //当前用户排第几位
}ONLINEUSER_INF,*LPONLINEUSER_INF;
ONLINEUSER_INF userinfo;
USER_INF inf;
recv(userinfo.sock ,str,10,0); //userinfo.sock 为客户端的SOCKET
CString string;
string.Format ("%s",str);
if(string==_T("REGT"))
{
memset(&inf,0,sizeof(USER_INF));
if(recv(userinfo.sock,(char *)&inf,sizeof(USER_INF),0)== SOCKET_ERROR)
{
closesocket(userinfo.sock);
AfxMessageBox("REGT recv命令出错");
return 1;
}
}
编译无错误显示,但是服务器接收的USER_INF结构信息为空,怎么回事啊???请大哥们指教,谢谢!!!
顶者有分!!!!