private async void sendFileNameAndPart(NetworkStream ns, string fileName, long fromByte, long toByte) { ClientUploadDownload cup = new ClientUploadDownload(fileName, fromByte, toByte); string jasonStriing = JsonConvert.SerializeObject(cup); byte[] jsonFile = ASCIIEncoding.ASCII.GetBytes(jasonStriing); byte[] jsonFileLength = BitConverter.GetBytes(jsonFile.Length); await ns.WriteAsync(jsonFileLength, 0, jsonFileLength.Length); await ns.WriteAsync(jsonFile, 0, jsonFile.Length); }
public async void getFileToDownload(NetworkStream ns) { string jsonFile; byte[] jsonBytes; byte[] jsonLengthBytes = new byte[4]; //int32 await ns.ReadAsync(jsonLengthBytes, 0, 4); // int32 jsonBytes = new byte[BitConverter.ToInt32(jsonLengthBytes, 0)]; await ns.ReadAsync(jsonBytes, 0, jsonBytes.Length); jsonFile = ASCIIEncoding.ASCII.GetString(jsonBytes); ClientUploadDownload cup = JsonConvert.DeserializeObject <ClientUploadDownload>(jsonFile); startSendFile(cup, ns); }
private async void startSendFile(ClientUploadDownload cup, NetworkStream ns) { FileStream fileStream = null; FilesAndStatus fas = null; foreach (FilesAndStatus tempFas in uploadFiles) { if (tempFas.FileName.Equals(cup.FileName)) { fas = tempFas; } } try { string path = currentUser.UpLoc + "\\" + cup.FileName; FileInfo file = new FileInfo(path); fileStream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read); long total = cup.ToByte - cup.FromByte; long ToatlSent = 0; long totalLeft = total; int len = 0; byte[] buffer = new byte[50000]; fileStream.Seek(cup.FromByte, 0); while (ToatlSent < total && ns.CanWrite && activeFlag) { //Read from the File (len contains the number of bytes read) if (totalLeft > 50000) { len = fileStream.Read(buffer, 0, buffer.Length); } else { len = fileStream.Read(buffer, 0, (int)totalLeft); } //Write the Bytes on the Socket await ns.WriteAsync(buffer, 0, len); //Increase the bytes Read counter ToatlSent += len; double pctread = ((double)ToatlSent / total) * 100; fas.PbValue = Convert.ToInt32(pctread); fas.Status = "Uploading"; while (bw.IsBusy) { ; } bw.RunWorkerAsync(); } } catch (Exception e) { Console.WriteLine("A Exception occured in transfer" + e.ToString()); fas.Status = "Error"; while (bw.IsBusy) { ; } bw.RunWorkerAsync(); MessageBoxResult result = MessageBox.Show("There was a problem with " + cup.FileName + "transfer"); } finally { fas.Status = "Completed"; while (bw.IsBusy) { ; } bw.RunWorkerAsync(); ns.Close(); if (fileStream != null) { fileStream.Dispose(); fileStream.Close(); } } }