int processor(SOCKET _clientSock) {
char szRecv[1024] = {};
int nLen = recv(_clientSock, szRecv, sizeof(DataHeader), 0);
DataHeader* header = (DataHeader*)szRecv;
if (nLen <= 0)
{
printf("客户端<%d>已经退出,任务结束。",_clientSock);
return -1;
}
printf("收到命令:%d ,数据长度:%d\n", header->cmd, header->dataLength);
if (nLen >= sizeof(DataHeader))
switch (header->cmd)
{
case CMD_LOGIN:
{
recv(_clientSock, szRecv + sizeof(DataHeader), header->dataLength - sizeof(DataHeader), 0);
Login* login = (Login*)szRecv;
std::cout << login->userName << " " << login->PassWord << std::endl;
char name[32] = "李逵";
char pw[32] = "110";
if (0 == (strcmp(name, login->userName) | strcmp(pw, login->PassWord)))
{
printf("<Socket %d>输入正确!,name is %s , password is %s ,数据长度:%d \n",_clientSock, login->userName, login->PassWord, login->dataLength);
std::cout << "sizeof cmd " << sizeof(login->cmd) << " " << "sizeof datalength" << sizeof(login->dataLength) << std::endl;
}
else
printf("<Socket %d>重新输入密码\n",_clientSock);
LoginResult result;
send(_clientSock, (char*)&result, sizeof(LoginResult), 0);
}
break;
case CMD_LOGOUT:
{
recv(_clientSock, szRecv + sizeof(DataHeader), header->dataLength - sizeof(DataHeader), 0);
Logout* logout = (Logout*)szRecv;
printf("<Socket %d>登出!,name is %s ,数据长度:%d \n",_clientSock, logout->userName, logout->dataLength);
LogoutResult result;
send(_clientSock, (char*)&result, sizeof(LogoutResult), 0);
}
break;
default:
{
DataHeader header = { 0,CMD_ERROR };
send(_clientSock, (char*)&header, sizeof(DataHeader), 0);
}
break;
}
}