UINT AcceptThread(LPVOID lpParam)
{
CVSMNETDlg* dlg=(CVSMNETDlg*)lpParam;
CSocket sockTemp;
while(1)
{
CString str,str1;
sockTemp.Create(4040);
sockTemp.Listen();
bRead=FALSE;
sockTemp.Accept(dlg->m_sockSend);
AfxBeginThread(SendDataThread,(void*)dlg);
}
sockTemp.Close();
return 0;
}
创建了一个线程用于等待客户端连接,在客户端连接之后再开一个线程,负责发送数据。
有一个成员变量 CSocket m_sockSend,在发送数据线程里,我应该怎样创建一个新的CSocket来负责发送呢?
因为要是有新的连接上来,m_sockSend的就会发生改变。

解决方案 »

  1.   

    csocket 用一个数组成员变量表示!
      

  2.   

    看你贴的图,不太对呀。把accept的socket保存的一个数组中,到这里找个例子参考吧:
    http://download.csdn.net/detail/geoff08zhang/4571358
      

  3.   

    UINT AcceptThread(LPVOID lpParam)
    {
    CVSMNETDlg* dlg=(CVSMNETDlg*)lpParam;
    CSocket sockTemp;
    //建立连接,发送车底照片
    while(1)
    {
    CString str,str1;
    sockTemp.Create(4040);
    sockTemp.Listen();
    sockTemp.Accept(dlg->m_sockSend[dlg->NumOfSock]);
    AfxBeginThread(SendDataThread,(void*)dlg);
    }
    sockTemp.Close();
    return 0;
    }//发送图片线程
    UINT SendDataThread(LPVOID lpParam)
    {
    CVSMNETDlg* dlg=(CVSMNETDlg*)lpParam;
    int i=dlg->NumOfSock;
    dlg->NumOfSock++;
    while(1)
    {
    EventObj.Lock();
    BOOL bSend;
    while(bOpen)
    {
    Sleep(500);
    }
    bOpen=TRUE;
    bSend=dlg->SendJPG(dlg->m_jpgCD,&(dlg->m_sockSend[dlg->NumOfSock]));
    while(!bSend)
    {
    bSend=dlg->SendJPG(dlg->m_jpgCD,&(dlg->m_sockSend[dlg->NumOfSock]));
    } bSend=dlg->SendJPG(dlg->m_jpgCS,&(dlg->m_sockSend[dlg->NumOfSock]));
    while(!bSend)
    {
    bSend=dlg->SendJPG(dlg->m_jpgCS,&(dlg->m_sockSend[dlg->NumOfSock]));
    } bSend=dlg->SendJPG(dlg->m_jpgCP,&(dlg->m_sockSend[dlg->NumOfSock]));
    while(!bSend)
    {
    bSend=dlg->SendJPG(dlg->m_jpgCP,&(dlg->m_sockSend[dlg->NumOfSock]));
    }
    bOpen=FALSE;
    dlg->SetDlgItemText(IDC_STATIC3,"等待消息...");
    }
    dlg->m_sockSend[dlg->NumOfSock].Close();

    }改成这样了,调试的时候,运行到bSend=dlg->SendJPG(dlg->m_jpgCD,&(dlg->m_sockSend[dlg->NumOfSock]))会报错
      

  4.   

    工作线程用就别用CSocket吧,用winsock API去写吧
      

  5.   

    有源码,有真相!
    http://blog.csdn.net/robertbaker/article/details/8557124