我在做一个类似QQ的即时通讯系统。(采用UDP方式)
现在要给多个好友发送多条消息。如果好友成功收到一条则返回一条信息已示成功,否则超过一定时间没收到则再次发送。(即保证每条信息都能成功收到)(要发送给多个好友多条信息!)采用程序方式如何处理这样的方法?请大家给个思路。谢谢!

解决方案 »

  1.   


    //思路就是将你要发送的用户类似一个数组将它们保存起来 //生成一个新的套节字与客户端通讯
    CClientSocket* pSocket = new CClientSocket(this); if (m_pSocket->Accept(*pSocket))
    {
    //将该套节字保存起来
    m_connectionList.AddTail(pSocket);
    }
    else
    delete pSocket;
    for(POSITION pos = m_connectionList.GetHeadPosition(); pos != NULL;)
    {
    //将新信息发送给每个客户端
    CClientSocket* pSocket = (CClientSocket*)m_connectionList.GetNext(pos);
    if (buffer != NULL)
    {
    pSocket->Send(buffer,nBufferSize,0);
    //在这里增加检查好友成功收到一条则返回一条信息
       //否则超过一定时间没收到则再次发送(TIMER)
    }
    }//其它就是发送,接收信息和TIMER设置时间判别的问题了
      

  2.   

    我现在使用SOCKET API方式写的网络程序。有一个监听线程监听收取所有的数据。
    这种方式如何处理?
      

  3.   

    可以使用个map表啊,是否发送<-->是否收到回应,定时器触发时,轮寻map表,重新发送为收到回应的消息。