局域网中有一台电脑做开发服务器,已用VC++编写基于MFC Socket的代码,代码已在局域网内做过测试,可以与局域网内的客户端正常通信。现在希望从外网访问该开发服务器,局域网内的该电脑已在路由器端做过端口映射,外网客户端已通过开发工具做过测试,可以和该电脑正常通信。但是运行我的开发程序时,却无法监听到外网客户端的连接。请问各位高手我该如何修改程序?

解决方案 »

  1.   

    信息不足。你先试试看从外网能否telnet到你内网服务器的端口。
      

  2.   

    你测试通信正常,不是用的自己程序监听的?那你从内网的其他计算机telnet你的程序监听的端口,看看如何。如果还是不行。就只有帖代码看。
      

  3.   

    嗯,不是用我自己的程序,使用开发工具的两个.exe 文件测试的。我的代码很长,其中监听代码如下:
    void CListenSocket::OnAccept(int nErrorCode)
    {
    CSocket::OnAccept(nErrorCode);
    m_pDlg->OnAccept();
    }
    void CServerView::OnAccept()
    {
    CSessionSocket *pSocket = new CSessionSocket(this);
    if (m_pListenSocket->Accept(*pSocket))
    {
    pSocket->Init();
    m_connList.AddTail(pSocket);
    //更新在线集中器台数
    CString strTemp;
    strTemp.Format("在线集中器台数:%d",m_connList.GetCount());
    m_staNum.SetWindowText(strTemp);
    } else delete pSocket;
    }
      

  4.   

    m_pListenSocket 的初始化部分贴来看看
      

  5.   

    void CSessionSocket::Init()
    {
        m_pFile = new CSocketFile(this,TRUE);
        m_pArchiveIn =new CArchive(m_pFile,CArchive::load);
    m_pArchiveOut =new CArchive(m_pFile,CArchive::store);
    }