mfc下socket通讯中,有一段代码看不懂,跪求诸位大侠

mfc下socket通讯中,有一段代码看不懂,跪求各位大侠?
本帖最后由 VisualEleven 于 2014-10-10 10:54:13 编辑
服务端的:

void CClientSocket::OnReceive(int nErrorCode)
{
// TODO: 在此添加专用代码和/或调用基类
((CserversocketDlg *)(AfxGetApp()->m_pMainWnd))->GetSocketMsg(this);

CSocket::OnReceive(nErrorCode);
}
void CserversocketDlg::GetSocketMsg(CClientSocket *psocket)
{
BOOL msgend=FALSE;
CString  msg;
char msgbuf[100];
int  sizebuf=100;

msg.Empty();
do
{
strcpy_s(msgbuf,"");//把第二个参数复制给第一个参数
int lengh=psocket->Receive(msgbuf,sizebuf);
if (lengh<100&&lengh>0)
{
msgend=TRUE;
}
msgbuf[lengh]=0;
msg+=msgbuf;



} while (!msgend);

AfxMessageBox(_T("接受客户端消息")_T("服务器程序"));
m_clientinfo+=msg;
UpdateData(false);
}

void CserversocketDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
if (!m_socketlist.IsEmpty())
{
UpdateData();

POSITION pos;//position的用法就是指向下一个节点

CClientSocket *socket=(CClientSocket *)m_socketlist.GetHead();

for (pos=m_socketlist.GetHeadPosition();pos!=NULL;)
{
socket=(CClientSocket *)m_socketlist.GetNext(pos);
socket->Send(LPCTSTR(m_serverinfo),1000);
}


}
else
{
      AfxMessageBox(_T("未建立socket连接")_T("服务器程序"));
}
//CDialogEx::OnOK();
}

问题就是:当有客户端消息时,客户端和服务端通讯正常的,在服务端会自动弹出客户端的消息嘛?

------解决思路----------------------
引用:
服务端的:

void CClientSocket::OnReceive(int nErrorCode)
{
// TODO: 在此添加专用代码和/或调用基类
((CserversocketDlg *)(AfxGetApp()->m_pMainWnd))->GetSocketMsg(this);

CSocket::OnReceive(nErrorCode);
}
void CserversocketDlg::GetSocketMsg(CClientSocket *psocket)
{
BOOL msgend=FALSE;
CString  msg;
char msgbuf[100];
int  sizebuf=100;

msg.Empty();
do
{
strcpy_s(msgbuf,"");//把第二个参数复制给第一个参数
int lengh=psocket->Receive(msgbuf,sizebuf);
if (lengh<100&&lengh>0)
{
msgend=TRUE;
}
msgbuf[lengh]=0;
msg+=msgbuf;



} while (!msgend);

AfxMessageBox(_T("接受客户端消息")_T("服务器程序"));
m_clientinfo+=msg;
UpdateData(false);
}

void CserversocketDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
if (!m_socketlist.IsEmpty())
{
UpdateData();

POSITION pos;//position的用法就是指向下一个节点

CClientSocket *socket=(CClientSocket *)m_socketlist.GetHead();

for (pos=m_socketlist.GetHeadPosition();pos!=NULL;)
{
socket=(CClientSocket *)m_socketlist.GetNext(pos);
socket->Send(LPCTSTR(m_serverinfo),1000);
}


}
else
{
      AfxMessageBox(_T("未建立socket连接")_T("服务器程序"));
}
//CDialogEx::OnOK();
}

问题就是:当有客户端消息时,客户端和服务端通讯正常的,在服务端会自动弹出客户端的消息嘛?

你使用的消息是阻塞方式工作,如果你需要在服务端,显示得到的客户消息,可使用CEdit控件或静态文本控件。
------解决思路----------------------
设断点查返回的错误码
------解决思路----------------------
你用的CSocket类?你客户端有Send消息过来的时候,你服务器程序的OnReceive()函数有响应没?