关于SendTo函数的返回值问题
最近在做一个UDP的聊天程序,但是对SendTo函数的返回值有点不太清楚,我查过MSDN,了解到他如果发送不成功就会返回一个SOCKET_ERROR,以下是一个enter 按钮的代码,问题出在这里,当我没有打开服务器的时候SendTo返回 0, 当打开服务器的时候也是返回 0, 我觉得当服务器没有打开的话,他就不会发送成功,应该返回 -1 才对,对此我有点困惑,希望朋友们能告诉我其中的原理!谢谢
void CMChartRoom_UDP_ClientDlg::OnBnClickedButtonEnterroom()
{
UpdateData(TRUE);
CString strEnterMsg;
int nSend;
nSend=m_pClientSock->SendTo(
(LPCTSTR)strEnterMsg,
strEnterMsg.GetLength(),
m_ServerAddr.uiPort,
m_ServerAddr.strIPAddr
);
if (nSend==SOCKET_ERROR )
{
AfxMessageBox(_T("进入聊天室失败,可能服务器端还没有运行"));
return;
}
this->GetDlgItem(IDC_BUTTON_ENTERROOM)->EnableWindow(FALSE);
this->GetDlgItem(IDC_BUTTON_LEAVEROOM)->EnableWindow(TRUE);
this->GetDlgItem(IDC_BUTTON_SENDMSG)->EnableWindow(TRUE);
((CEdit*)this->GetDlgItem(IDC_EDIT_SENDMSG))->SetReadOnly(FALSE);
((CEdit*)this->GetDlgItem(IDC_EDIT_SERVERIP))->SetReadOnly(TRUE);
((CEdit*)this->GetDlgItem(IDC_EDIT_SERVERPORT))->SetReadOnly(TRUE);
m_bEnterRoom=TRUE;
}