我在局域网实现了发信息和传送文件。不过传文件不打稳定!我想知道有什么好的办法,还有就是我想知道怎么才能在internet上实现发信息和传送文件??
请大虾们说说思路,也希望有代码的大虾能给我发一份谢谢。
[email protected]

解决方案 »

  1.   

    为什么会传文件不稳定?
    Intenet和局域网的程序是一样的
      

  2.   

    对于网络不稳定的情况,最好能把文件分段(固定短长)打包(加入标识,文件的那部分)来传送,
    接受程序利用响应的机制来接受。
    如果你的程序要支持网际间传输,必须考虑有代理服务器的情况,如果双方都处于私网内,不借助与服务器是不可能实现的。建议看一下RFC 1928(SOCKES5代理协议)。
      

  3.   

    这是接收端的:
    DWORD WINAPI clientthread(LPVOID lpparam)
    {
    fileinfo* fiinfo;
    char* m_buf;
    m_buf=new char[100];
    CString aaa;
    int ret;
    int m_nBuf;
    ret= m_STemp.Receive(m_buf,100);
    Sleep(500);
    fiinfo=(fileinfo*)m_buf;
    switch(fiinfo->iType)
    {
    case 0: break;
    case 2:
    break;
    case 1:
    readfile(fiinfo->iSeek,fiinfo->lLenth,fiinfo->iFileNo);
    break;
    default:
    break;
    }
      return 0;
    }
    void readfile( int seek,
       int len,
       int fino
      )
    {
    CFile myFile;
    int iCount = myFile.Open("ajp.exe", CFile::modeCreate|CFile::modeWrite | CFile::typeBinary);
    myFile.Seek(seek,CFile::begin);
    char m_buf[1024];
    char *m_bufBak;
    int len2 = myFile.GetLength();
    while(1)
    {
    int kk = m_STemp.Receive(m_buf,SIZE);
    Sleep(100);
    len -= kk;
    myFile.Write(m_buf,kk);
    if(kk == 0||len<=0)
    {
    break;
    }
    }
    myFile.Close();
    }
    可是又必须在每次m_STemp.Receive接收前加Sleep(),相应的在每次发送端也要加上sleep否则会出错
      

  4.   

    回cmsbai(小白);你说的我不大明白,我是菜鸟。能不能详细说一下
    1。对于网络不稳定的情况,最好能把文件分段(固定短长)打包(加入标识,文件的那部分)来传送,接受程序利用响应的机制来接受。
    ////////*********用什么样的机制好呢!
    如果你的程序要支持网际间传输,必须考虑有代理服务器的情况,如果双方都处于私网内,不借助与服务器是不可能实现的。建议看一下RFC 1928(SOCKES5代理协议)。
    //////////**********这个也没看懂。
    谢谢
      

  5.   

    http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=21228&forum_id=25