Beispiel #1
0
 private void fileResponse(string strRead)
 {
     try{
         FileRequestObjcet fro = new FileRequestObjcet(strRead);
         FileInfo          fi  = new FileInfo(fro.FilePath);
         if (fi.Exists)
         {
             TcpClient fileSendClient = new TcpClient(AddressFamily.InterNetwork);
             fileSendClient.Connect(fro.RemoteIEP);
             NetworkStream ns = fileSendClient.GetStream();
             BinaryWriter  bw = new BinaryWriter(ns);
             bw.Write(fro.ID);
             FileStream fs       = new FileStream(fro.FilePath, FileMode.Open);
             byte[]     readBuf  = new byte[NetClass.BUFF_SIZE];
             int        byteRead = 0;
             while ((byteRead = fs.Read(readBuf, 0, NetClass.BUFF_SIZE)) > 0)
             {
                 bw.Write(readBuf, 0, byteRead);
             }
             fs.Close();
             bw.Close();
             ns.Close();
             fileSendClient.Close();
         }
     }
     catch (Exception e)
     {
         Debug.WriteLine(e.Message);
     }
 }
Beispiel #2
0
        public void FileRequest(IPEndPoint remote, string path)
        {
            DialogResult dr           = MessageBox.Show("是否保存文件:是[保存并打开],否[仅打开]", "选择", MessageBoxButtons.YesNoCancel);
            string       fileSavePath = "";

            if (dr == DialogResult.Yes)
            {
                SaveFileDialog sfdlg = new SaveFileDialog();
                sfdlg.DefaultExt       = path.Substring(path.LastIndexOf("."));
                sfdlg.RestoreDirectory = true;
                if (sfdlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    fileSavePath = sfdlg.FileName;
                }
            }
            else if (dr == DialogResult.No)
            {
                int loca = path.LastIndexOf('\\');
                //int DateTime.Now.ToString format, fff... stands for milliseconds
                //for example ss-ffff:57-2141
                fileSavePath = recvTmpPath + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + "_";
                string fileSaveName;
                while (true)
                {
                    fileSaveName = CommMethod.RandString(4) + "_";
                    if (loca > 0)
                    {
                        fileSaveName += path.Substring(loca + 1);
                    }
                    else
                    {
                        fileSaveName += path;
                    }
                    FileInfo fs = new FileInfo(fileSavePath + fileSaveName);
                    if (!fs.Exists)
                    {
                        fileSavePath += fileSaveName;
                        break;
                    }
                }
            }
            else
            {
                return;
            }
            FileWaitObjcet fwo = new FileWaitObjcet();

            fwo.ID       = CommMethod.RandString(FileWaitObjcet.IDLength);
            fwo.SavePath = fileSavePath;

            fileWaitMutex.WaitOne();
            while (dicFileWait.ContainsKey(fwo.ID))
            {
                fwo.ID = CommMethod.RandString(FileWaitObjcet.IDLength);
            }
            dicFileWait.Add(fwo.ID, fwo);
            fileWaitMutex.ReleaseMutex();

            FileRequestObjcet fro = new FileRequestObjcet(fwo.ID, netc.LocalFileRecvIEP, path);

            netc.SendTCPString(remote, FileRequestHead + fro.ToString());
        }