我已经实现了客户端与服务端的聊天功能.....想加上一个传送文件的功能....  
同时实现聊天和收发文件我暂时不处理了....  
我现在想实现文件的双向传输....  
 
在一端取得文件信息后  点击(发送)...后    等待....  
 在接收端想实现(确定接收)...或者(另存为)..或者..(拒绝)  
         
接收端点击(确定接收)...或者(另存为)..    怎么触发发送端  的发送呢  
 
我不知道怎么实现这个(触发).....{发送端只设置(发送按钮)..}              希望高手能指点指点      或者贴点例子代码    谢谢!!!!

解决方案 »

  1.   

    通过socket发一个标志回去,然后server根据该标志发送或等待
      

  2.   

    如果接收端可以点击接收或者另存为 取消,同时发送一个标志到发送端,当是取消时,标志为false,其他为true,接收到true的消息时发送端触发传送文件事件!
      

  3.   

    你的建议很不错...你应该是一高手...继续请教你...
    我定义一个结构
    StreamFileInfo.dwFileAttributes  =    FindFileData.dwFileAttributes;
    StreamFileInfo.ftCreationTime    =    FindFileData.ftCreationTime;
    StreamFileInfo.ftLastAccessTime  =    FindFileData.ftLastAccessTime;
    StreamFileInfo.ftLastWriteTime   =    FindFileData.ftLastWriteTime;
    StreamFileInfo.nFileSizeHigh     =    FindFileData.nFileSizeHigh;
    StreamFileInfo.nFileSizeLow      =    FindFileData.nFileSizeLow;
    StreamFileInfo.cAlternateFileName=
    (TCHAR)FindFileData.cAlternateFileName;
    StreamFileInfo.cFileName   =  (TCHAR)FindFileData.cFileName;send(ServerSocket,(char *)&StreamFileInfo, sizeof(SOCKET_STREAM_FILE_INFO),0);//这里发送文件信息....
    //接下来我就不知道怎么处理了 , 发送了文件信息等待接收端接收或者拒绝...回复过来接收或者拒绝时候这里怎么处理呢  我就不知道这个下面的代码该怎么触发...下面再加一个rev来接收接收端的接收或者拒绝信息会阻塞吧?  UINT nSize=0;
      UINT nSend=0;
     
     while(nSize < StreamFileInfo.nFileSizeLow)
     {
     //byte * szBuf=new byte[1024];
     char * szBuf=new char[1024];
     nSend=myFile.Read(szBuf, 1024);
     send(ServerSocket,(char *)&szBuf, sizeof(szBuf),0);
     nSize+=nSend;
     }
      

  4.   

    你发送完文件信息以后,应该等待接收端的应答。他是会阻塞的,但是你可以利用 select让他阻塞一段时间,例如10秒钟,如果10秒钟接收端还不返回应答则认为超时,接受端不管是接受还是拒绝等,均需要回复一条信息给发送者,例如结构:struct Accept
    {
       int type;   // 0 = 拒绝、1= 接受(另存根本就不用关心的)
       ...
    }接收端无论是拒绝还是接受都发送上面的结构给发送端,发送端接收到应答以后判断 type 是否为1,如果为1则开始文件的发送。
      

  5.   

    谢谢各位  特别谢谢ProgrameMan(我要学汇编)和(前掠翼)  给分 呵呵