函数代码如下:
void ESocket::sendToserver(int type,CString mpass,CString mid)
{
Clogin logdlg;
stMessage sendbuf;
sendbuf.iMessageType = LOGIN;
//logdlg.m_PASS = logdlg.GetDlgItemText
// logdlg.UpdateData(TRUE);
logdlg.m_PASS = mpass;
logdlg.m_ID = mid;
for(int i = 0;i<logdlg.m_PASS.GetLength();i++)
sendbuf.message.loginmember.password[i] = logdlg.m_PASS[i];
for(int j = 0;j<logdlg.m_ID.GetLength();j++)
sendbuf.message.loginmember.userName[j] = logdlg.m_ID[j];//
/////////////////////////////////////////
char L_serverip[10] = "127.0.0.1";
memcpy(serverip,L_serverip,10);
sockaddr_in server;
server.sin_addr.S_un.S_addr = inet_addr(serverip);
server.sin_family = AF_INET;
server.sin_port = htons(SERVER_PORT);
int sendcharacters;
static int errorcode;
//sendcharacters = SendTo((const char*)&sendbuf,sizeof(sendbuf),(const SOCKADDR*)&server,sizeof(server));//向服务器发送登陆信息
sendcharacters = SendTo((const char*)&sendbuf,sizeof(sendbuf),SERVER_PORT,serverip);
errorcode = GetLastError();
}
void ESocket::sendToserver(int type,CString mpass,CString mid)
{
Clogin logdlg;
stMessage sendbuf;
sendbuf.iMessageType = LOGIN;
//logdlg.m_PASS = logdlg.GetDlgItemText
// logdlg.UpdateData(TRUE);
logdlg.m_PASS = mpass;
logdlg.m_ID = mid;
for(int i = 0;i<logdlg.m_PASS.GetLength();i++)
sendbuf.message.loginmember.password[i] = logdlg.m_PASS[i];
for(int j = 0;j<logdlg.m_ID.GetLength();j++)
sendbuf.message.loginmember.userName[j] = logdlg.m_ID[j];//
/////////////////////////////////////////
char L_serverip[10] = "127.0.0.1";
memcpy(serverip,L_serverip,10);
sockaddr_in server;
server.sin_addr.S_un.S_addr = inet_addr(serverip);
server.sin_family = AF_INET;
server.sin_port = htons(SERVER_PORT);
int sendcharacters;
static int errorcode;
//sendcharacters = SendTo((const char*)&sendbuf,sizeof(sendbuf),(const SOCKADDR*)&server,sizeof(server));//向服务器发送登陆信息
sendcharacters = SendTo((const char*)&sendbuf,sizeof(sendbuf),SERVER_PORT,serverip);
errorcode = GetLastError();
}
而send和sendto函数的第一个参数就是SOCKET s;
这个SOCKET s是通过调用socket函数返回的,例如:
SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(s == INVALID_HANDLE)
{
//error
return;
}
int retVal = send(s, lpBuf, bufLen);
sendcharacters = SendTo((const char*)&sendbuf,sizeof(sendbuf),SERVER_PORT,serverip);
errorcode = GetLastError();调用GetLastError()是不对的,应该调用WSAGetLastError()