void Mysock::OnAccept(int nErrorCode)
{
Mysock *sock=new Mysock();
if(Accept(*sock)!=0)
{
CString a="有一个游客进入聊天室!";
POSITION pos;
m_List.AddHead(sock);
pos=m_List.GetHeadPosition();
f(pos!=NULL)
AfxMessageBox("socket已经存入列表");
CSockserverApp* app=(CSockserverApp*)AfxGetApp();
CSockserverDlg* dlg=(CSockserverDlg*)app->m_pMainWnd;
dlg->m_read=a;
dlg->UpdateData(false);
}
else
delete sock;
CAsyncSocket::OnAccept(nErrorCode);
}void Mysock::OnReceive(int nErrorCode)
{
int i;
POSITION pos;
CString text;
char shuju[200];
pos=m_List.GetHeadPosition();
do
{
Mysock *sock=(Mysock*)m_List.GetNext(pos);
i=sock->Receive(shuju,sizeof(shuju));
}while(pos!=NULL&&i==SOCKET_ERROR);
if(i==SOCKET_ERROR)
{
text.Format("%s",shuju);
CSockserverApp* app=(CSockserverApp*)AfxGetApp();
CSockserverDlg* dlg=(CSockserverDlg*)app->m_pMainWnd;
dlg->m_read=text;
dlg->UpdateData(false);
} CAsyncSocket::OnReceive(nErrorCode);
}怎么回事啊?
连接可以连接,但一接受数据就出错,连接函数里经过测试确实列表存了SOCKET,但接受那里列表居然是空的。
{
Mysock *sock=new Mysock();
if(Accept(*sock)!=0)
{
CString a="有一个游客进入聊天室!";
POSITION pos;
m_List.AddHead(sock);
pos=m_List.GetHeadPosition();
f(pos!=NULL)
AfxMessageBox("socket已经存入列表");
CSockserverApp* app=(CSockserverApp*)AfxGetApp();
CSockserverDlg* dlg=(CSockserverDlg*)app->m_pMainWnd;
dlg->m_read=a;
dlg->UpdateData(false);
}
else
delete sock;
CAsyncSocket::OnAccept(nErrorCode);
}void Mysock::OnReceive(int nErrorCode)
{
int i;
POSITION pos;
CString text;
char shuju[200];
pos=m_List.GetHeadPosition();
do
{
Mysock *sock=(Mysock*)m_List.GetNext(pos);
i=sock->Receive(shuju,sizeof(shuju));
}while(pos!=NULL&&i==SOCKET_ERROR);
if(i==SOCKET_ERROR)
{
text.Format("%s",shuju);
CSockserverApp* app=(CSockserverApp*)AfxGetApp();
CSockserverDlg* dlg=(CSockserverDlg*)app->m_pMainWnd;
dlg->m_read=text;
dlg->UpdateData(false);
} CAsyncSocket::OnReceive(nErrorCode);
}怎么回事啊?
连接可以连接,但一接受数据就出错,连接函数里经过测试确实列表存了SOCKET,但接受那里列表居然是空的。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货