public RequestSendFileEventArgs( TraFransfersFileStart traFransfersFileStart, IPEndPoint remoteIP) : base() { _traFransfersFileStart = traFransfersFileStart; _remoteIP = remoteIP; }
private void SendFileOutTimer_Elapsed(object sender, ElapsedEventArgs e) { lock (SendFileOutTimeLock) { try { List<SendFileManager> lsManager = new List<SendFileManager>(); foreach (SendFileManager item in SendFileManagerList.Values) { lsManager.Add(item); } foreach (SendFileManager item in lsManager) { if (item.SendFileOutTime > 5) { //OnFileSendRefuse(new FileSendEventArgs(item));//取消当前的发送 if (SendFileManagerList.ContainsKey(item.MD5)) { //SendFileManagerList.Remove(item.MD5); //Send((int)Command.RequestCancelSendFile, item.MD5);//告诉对方我取消了发送 //item.Dispose(); TraFransfersFileStart ts = new TraFransfersFileStart( item.MD5, item.Name, Icon.ExtractAssociatedIcon(item.FileName).ToBitmap(), item.Length, item.PartCount, item.PartSize); Send((int)Command.RequestSendFile, ts); item.SendFileOutTime = 0; } } if (item.SendFileOutTime != -1) { item.SendFileOutTime++; } } } catch (Exception) { } } }
//public void SendFile(string fileName) //{ // SendFileManager sendFileManager = new SendFileManager(fileName); // if (SendFileManagerList.ContainsKey(sendFileManager.MD5)) // { // throw new Exception(string.Format( // "文件 {0} 正在发送,不能发送重复的文件。", // fileName)); // } // else // { // SendFileManagerList.Add(sendFileManager.MD5, sendFileManager); // sendFileManager.ReadFileBuffer += new ReadFileBufferEventHandler( // SendFileManageReadFileBuffer); // TraFransfersFileStart ts = new TraFransfersFileStart( // sendFileManager.MD5, // sendFileManager.Name, // Icon.ExtractAssociatedIcon(fileName).ToBitmap(), // sendFileManager.Length, // sendFileManager.PartCount, // sendFileManager.PartSize); // Send((int)Command.RequestSendFile, ts); // } //} public void SendFile(SendFileManager sendFileManager, Image image) { if (SendFileManagerList.ContainsKey(sendFileManager.MD5)) { throw new Exception(string.Format( "文件 {0} 正在发送,不能发送重复的文件。", sendFileManager.FileName)); } else { SendFileManagerList.Add(sendFileManager.MD5, sendFileManager); sendFileManager.ReadFileBuffer += new ReadFileBufferEventHandler( SendFileManageReadFileBuffer); TraFransfersFileStart ts = new TraFransfersFileStart( sendFileManager.MD5, sendFileManager.Name, image, sendFileManager.Length, sendFileManager.PartCount, sendFileManager.PartSize); Send((int)Command.RequestSendFile, ts); //文件接收超时管理 if (SendFileOutTimer.Enabled == false) { SendFileOutTimer.Enabled = true; } } }
private void OnStartRecieve( TraFransfersFileStart traFransfersFileStart, IPEndPoint remoteEP) { OnRequestSendFile( new RequestSendFileEventArgs( traFransfersFileStart, remoteEP)); }