private void StartWriteFile(FileServerDLMessage msg) { Writing = true; offset = 0; string[] words = msg.TargetFile.Split('\\'); string name = words[words.Length - 1]; CurrentFile = new FileInfo(msg.SaveDir + "\\" + name); }
private void CloseFile() { Writing = false; SavedFile(this, new FileServerSavedFileEventArgs(CurrentFile.Name, CurrentFile.FullName, 1)); CurrentFile = null; if (DownloadQueue.Count > 0) { CurrentMessage = DownloadQueue.Dequeue(); SendToOne(MessageType.FilesAsk, CurrentMessage.TargetFile, CurrentMessage.Owner); } }
private void btLeft_Click(object sender, EventArgs e) { DialogResult result; result = (DialogResult)(Program.main.Invoke(new Func<DialogResult>(folderDialog.ShowDialog))); if (result == DialogResult.OK) { string saveDir = folderDialog.SelectedPath; foreach (int i in this.listView1.CheckedIndices) { string fullname = fullNames[i]; string[] items = fullname.Split(); string withoutLenght = String.Join(" ", items, 0, items.Length - 1); long lenght = Convert.ToInt64(items[items.Length - 1]); FileServerDLMessage msg = new FileServerDLMessage(withoutLenght, saveDir, Sender, lenght); Program.serverPool.GetFile(msg); } this.Close(); } }
private void btLeft_Click(object sender, EventArgs e) { DialogResult result; result = (DialogResult)(Program.main.Invoke(new Func <DialogResult>(folderDialog.ShowDialog))); if (result == DialogResult.OK) { string saveDir = folderDialog.SelectedPath; foreach (int i in this.listView1.CheckedIndices) { string fullname = fullNames[i]; string[] items = fullname.Split(); string withoutLenght = String.Join(" ", items, 0, items.Length - 1); long lenght = Convert.ToInt64(items[items.Length - 1]); FileServerDLMessage msg = new FileServerDLMessage(withoutLenght, saveDir, Sender, lenght); Program.serverPool.GetFile(msg); } this.Close(); } }
public void GetFile(FileServerDLMessage msg) { if (Writing == true) { DownloadQueue.Enqueue(msg); } else { SendToOne(MessageType.FilesAsk, msg.TargetFile, msg.Owner); CurrentMessage = msg; } string[] items = msg.TargetFile.Split('\\'); string name = items[items.Length - 1]; if (SaveDirs.ContainsKey(name)) { SaveDirs[name] = msg.SaveDir; } else { SaveDirs.Add(name, msg.SaveDir); } }
public void GetFile(FileServerDLMessage msg) { if (Writing == true) { DownloadQueue.Enqueue(msg); } else { SendToOne(MessageType.FilesAsk, msg.TargetFile, msg.Owner); CurrentMessage = msg; } string[] items = msg.TargetFile.Split('\\'); string name = items[items.Length - 1]; if (SaveDirs.ContainsKey(name)) { SaveDirs[name] = msg.SaveDir; } else { SaveDirs.Add(name, msg.SaveDir); } }
public override void Receive(MessageType msgType, NetworkStream stream, IPAddress owner) { switch (msgType) { case MessageType.FilesTableAvailable: { byte[] count = new byte[4]; stream.Read(count, 0, 4); int size = BitConverter.ToInt32(count, 0); byte[] buffer = new byte[size]; stream.Read(buffer, 0, size); object filesData = SimpleFormatters.BytesToObject(buffer); RecievedFileTable(this, new ReceivedMessageEventArgs(MessageType.FilesTableAvailable, filesData, owner)); break; } case MessageType.FilesAsk: { byte[] count = new byte[4]; stream.Read(count, 0, 4); int size = BitConverter.ToInt32(count, 0); byte[] buffer = new byte[size]; stream.Read(buffer, 0, size); string file = (string)SimpleFormatters.BytesToObject(buffer); FileServerULMessage msg = new FileServerULMessage(file, owner); UploadQueue.Enqueue(msg); if (Sending == false) { this.AfterConnectionClosed += new Action(StartUploadFile); } break; } case MessageType.FileDataFirst: { byte[] count = new byte[4]; stream.Read(count, 0, 4); int len = BitConverter.ToInt32(count, 0); byte[] buffer = new byte[len]; stream.Read(buffer, 0, len); char[] symbols = new char[len]; symbols = System.Text.Encoding.Unicode.GetChars(buffer); string[] words = new string(symbols).Split(); string name = String.Join(" ", words, 0, words.Length - 1); long lenght = Convert.ToInt64(words[words.Length - 1]); FileServerDLMessage thisFIle = new FileServerDLMessage(name, SaveDirs[name], owner, lenght); if (Writing == true) { DownloadQueue.Enqueue(thisFIle); } else { StartWriteFile(thisFIle); } break; } case MessageType.FileData: { byte[] count = new byte[4]; stream.Read(count, 0, 4); int len = BitConverter.ToInt32(count, 0); byte[] buffer = new byte[len]; int readed = 0, offset = 0, toRead = len; while (true) { readed += stream.Read(buffer, offset, toRead); if (readed < len) { offset = readed; toRead = len - readed; } else { break; } } AppendToFile(buffer); break; } case MessageType.FileDataLast: { CloseFile(); break; } default: { break; } } }
public override void Receive(MessageType msgType, NetworkStream stream, IPAddress owner) { switch (msgType) { case MessageType.FilesTableAvailable: { byte[] count = new byte[4]; stream.Read(count, 0, 4); int size = BitConverter.ToInt32(count, 0); byte[] buffer = new byte[size]; stream.Read(buffer, 0, size); object filesData = SimpleFormatters.BytesToObject(buffer); RecievedFileTable(this, new ReceivedMessageEventArgs(MessageType.FilesTableAvailable, filesData, owner)); break; } case MessageType.FilesAsk: { byte[] count = new byte[4]; stream.Read(count, 0, 4); int size = BitConverter.ToInt32(count, 0); byte[] buffer = new byte[size]; stream.Read(buffer, 0, size); string file = (string)SimpleFormatters.BytesToObject(buffer); FileServerULMessage msg = new FileServerULMessage(file, owner); UploadQueue.Enqueue(msg); if (Sending == false) { this.AfterConnectionClosed += new Action(StartUploadFile); } break; } case MessageType.FileDataFirst: { byte[] count = new byte[4]; stream.Read(count, 0, 4); int len = BitConverter.ToInt32(count, 0); byte[] buffer = new byte[len]; stream.Read(buffer, 0, len); char[] symbols = new char[len]; symbols = System.Text.Encoding.Unicode.GetChars(buffer); string[] words = new string(symbols).Split(); string name = String.Join(" ", words, 0, words.Length - 1); long lenght = Convert.ToInt64(words[words.Length - 1]); FileServerDLMessage thisFIle = new FileServerDLMessage(name, SaveDirs[name], owner, lenght); if (Writing == true) { DownloadQueue.Enqueue(thisFIle); } else { StartWriteFile(thisFIle); } break; } case MessageType.FileData: { byte[] count = new byte[4]; stream.Read(count, 0, 4); int len = BitConverter.ToInt32(count, 0); byte[] buffer = new byte[len]; int readed = 0, offset = 0, toRead = len; while (true) { readed += stream.Read(buffer, offset, toRead); if (readed < len) { offset = readed; toRead = len - readed; } else { break; } } AppendToFile(buffer); break; } case MessageType.FileDataLast: { CloseFile(); break; } default: { break; } } }
private void StartWriteFile(FileServerDLMessage msg) { Writing = true; offset = 0; string[] words = msg.TargetFile.Split('\\'); string name = words[words.Length - 1]; CurrentFile = new FileInfo(msg.SaveDir + "\\" + name); }
private void CloseFile() { Writing = false; SavedFile(this, new FileServerSavedFileEventArgs(CurrentFile.Name, CurrentFile.FullName, 1)); CurrentFile = null; if (DownloadQueue.Count > 0) { CurrentMessage = DownloadQueue.Dequeue(); SendToOne(MessageType.FilesAsk, CurrentMessage.TargetFile, CurrentMessage.Owner); } }