一个莫名奇妙的问题!
所有的client登陆到server中,登陆时发送client的信息,包括用户名和ip和port!
m_pDoc->UserInfo[i].Name = RecvMess[i].Name;
m_pDoc->UserInfo[i].IPAddr = RecvMess[i].IPAddr;
m_pDoc->UserInfo[i].Port = RecvMess[i].Port;
m_pDoc->UpdateAllViews(NULL, 0L, 0);
RecvMess[i] 是接收到的信息,UserInfo[i]是server端保存的用户信息,保存在mfc的doc类中!
然后server想把这些信息发给某一个client
for (int j = 0; j < MAXClient; j++)
{
if(m_aClientSocket[j] != INVALID_SOCKET)
{
m_pDoc = GetDocument();
RecvMess[j].Name = m_pDoc->UserInfo[j].Name;
RecvMess[j].IPAddr = m_pDoc->UserInfo[j].IPAddr;
RecvMess[j].Port = m_pDoc->UserInfo[j].Port;
int iErrorCode = send ( m_aClientSocket[i], (char *)&RecvMess[j], // 发给客户端i
sizeof(RecvMess[j]), NO_FLAGS);
if (iErrorCode == SOCKET_ERROR)
ReportWinsockErr("客户端没有响应");
}
}
问题来了,当只有一个客户端登陆时,完全ok!
但是当两个客户端登陆时,就总是说内存无法访问?(对于不同的客户端用不同的socket连接tcp)
断点调试
RecvMess[j].Name = m_pDoc->UserInfo[j].Name;
此句总是通不过,为什么啊,急!
是不是涉及到进程之间通信的问题呢?