CArray<char*,char*> m_uName;
CArray<SOCKET,SOCKET> m_uSock;m_uName :里面有四个值:100 200 300 400线程中:
int len=m_uName.GetSize();
CString strArray;这里是转发:
for(int i=0;i<len;i++)
{
    if(StrUser==strArray)                             //StrUser 要转发的名字。
    {
        strArray.Foramt("%s",m_uName.GetAt(i));
        send(m_uSock.GetAt(i),fsBuf,0,512,0);         //m_uSock.GetAt(i) 是对应的套接字,问题存在发送序号总错。
        break;
     }                                            
}为了验证为在一个MssageBox 显示结果:
m_uName 的值:100 200 300 100 
百思不得其解。。为什么?????我并没有修改m_uName中的值,怎么会无故改变?

解决方案 »

  1.   


    发错了:
    for(int i=0;i<len;i++)
    {
      strArray.Foramt("%s",m_uName.GetAt(i));
      if(StrUser==strArray) //StrUser 要转发的名字。
      {
       send(m_uSock.GetAt(i),fsBuf,0,512,0); 
        break;
      }   
    }
      

  2.   

    send怎么会有五个参数?
    应该是send(m_uSock.GetAt(i),fsBuf,512,0);你在线程中
    这样打印,看会不会对,程序不会乱跑,他肯定是按你写的走的,你写的错了,也按你的旨意办事。
    CString strItem;
    int len=m_uName.GetSize();
    for(int i = 0; i< len; i++)
    {
       strItem.Format("%s",m_uName.GetAt(i));
       AfxMessageBox(strItem);
    }