CArchive Flush不发送数据 [英] CArchive Flush is not sending data

查看:92
本文介绍了CArchive Flush不发送数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我正在使用CSocket,CSocketFile,CArchive创建一个简单的CHAT应用程序。最初它工作正常,但经过一些对话后,CArchive Flush不会发送数据。我调试了代码并发现在接收方,OnReceive在从发送方调用Flush后没有被调用。我很困惑,因为它可以工作一段时间,之后它不会发送数据。
这是我的代码

无法CChatDlg :: OnBnClickedBsend()
{
    UpdateData(TRUE);
    // m_strMessage与编辑框相关联    if(!m_strMessage.IsEmpty())
    {
        m_bISFileTransfer = false;

    &NBSP;&NBSP;&NBSP; //现在填写档案馆    &NBSP;&NBSP;&NBSP; *(m_ptrArIn)<< m_bISFileTransfer;
    &NBSP;&NBSP;&NBSP;
    &NBSP;&NBSP;&NBSP; *(m_ptrArIn)<< m_strMessage;
    &NBSP;&NBSP;&NBSP;
    &NBSP;&NBSP;&NBSP; //发送邮件
    &NBSP;&NBSP;&NBSP; m_ptrArIn-> Flush();

        UpdateData(FALSE);
    }


void CChatDlg :: OnReceive(void)
{
     if(m_ptrArOut-> IsLoading())
    {
    &NBSP;&NBSP;&NBSP; // * m_ptrArOut>> m_bISFileTransfer;&NBSP;&NBSP;

         if(m_bISFileTransfer == true)
   &NBSP; &NBSP;&NBSP; {
             CString strRecvMessage;

       &NBSP; &NBSP;&NBSP; *(m_ptrArOut)>> strRecvMessage;
              //将字符串添加到列表框中  &NBSP; &NBSP; &NBSP; &NBSP;&NBSP; &NBSP;&NBSP; m_ctlRecieve.AddString(strRecvMessage.GetBuffer()); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;
    &NBSP; &NBSP; }&NBSP;&NBSP;&NBSP;&NBSP;
    }&NBSP;&NBSP;

解决方案

hi blo
请参考以下内容..
http://msdn.microsoft.com/en-us/library/ w7fyzz5k(VS.80)的.aspx


问候,
S.SubashSelvan

hi,

I am creating a simple CHAT application using CSocket, CSocketFile, CArchive. Initially it works fine but after some conversation, CArchive Flush does'nt send the data. I debugged the code and found that at receiver side OnReceive is not getting called after calling Flush from sender. I am confused because it works for sometime, after that it not send the data.
here is my code

void CChatDlg::OnBnClickedBsend()
{
    UpdateData(TRUE);
    // m_strMessage is associated with edit box
    if(!m_strMessage.IsEmpty())
    {
        m_bISFileTransfer = false;

        // Now fill the archive
        *(m_ptrArIn) << m_bISFileTransfer;
       
        *(m_ptrArIn) << m_strMessage;
       
        // Send the message
        m_ptrArIn->Flush();

        UpdateData(FALSE);
    }

}

void CChatDlg::OnReceive(void)
{
     if(m_ptrArOut->IsLoading())
    {
        //*m_ptrArOut >> m_bISFileTransfer;  

         if(m_bISFileTransfer == true)
        {
             CString strRecvMessage;

            *(m_ptrArOut) >> strRecvMessage;
             // Add string to list box
              m_ctlRecieve.AddString(strRecvMessage.GetBuffer());          
        }    
    }  
}

解决方案

hi


Please refer the following..
http://msdn.microsoft.com/en-us/library/w7fyzz5k(VS.80).aspx


Regards,
S.SubashSelvan


这篇关于CArchive Flush不发送数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆