/// <summary> /// Return the count of log files that were sent. /// </summary> /// <returns></returns> public static int SendFileCount() { int fileCount = 0; fileCount = SendFiles.Count(); return(fileCount); }
private void AcceptTcpClient(object param) { TcpClient client = (TcpClient)param; try { byte[] bytes = new byte[256]; StringBuilder stringBuilder = new StringBuilder(); NetworkStream networkStream = client.GetStream(); int i; while ((i = networkStream.Read(bytes, 0, bytes.Length)) != 0) { stringBuilder.Append(Encoding.UTF8.GetString(bytes, 0, i)); if (i < bytes.Length) { break; } } // Sending a list of files? try { SendFiles sendFiles = Helper.XmlDeserialize <SendFiles>(stringBuilder.ToString()); if (UserWantToSendFiles != null) { AirServer.IPEndPointHolder ipEndPointHolder = new IPEndPointHolder(); ipEndPointHolder.IpEndPoint = new IPEndPoint(IPAddress.Parse(sendFiles.UserAddress.Address), sendFiles.UserAddress.Port); ipEndPointHolder.IsAvailable = true; UserWantToSendFiles(sendFiles, ipEndPointHolder, client); } else { client.Close(); } } catch { } } catch { client.Close(); } }
public void ReceiveFilesFromAsync(IPEndPointHolder ipEndPoint, TcpClient client, SendFiles sendFiles, bool receive, object state, UserReceiveFilesProgress progress, UserReceiveFilesComplete complete) { new Thread(new ThreadStart(() => { try { ReceiveFilesFrom(ipEndPoint, client, sendFiles, receive, state, progress); if (complete != null) { complete(sendFiles, ipEndPoint, state, null); } } catch (Exception e) { if (complete != null) { complete(sendFiles, ipEndPoint, state, e); } } })).Start(); }
public void ReceiveFilesFrom(IPEndPointHolder ipEndPoint, TcpClient client, SendFiles sendFiles, bool receive, object state, UserReceiveFilesProgress progress) { try { byte[] bytes = new byte[1024]; NetworkStream networkStream = client.GetStream(); { byte[] buffer = Encoding.UTF8.GetBytes(Helper.XmlSerialize <SendFilesData>(new SendFilesData() { UserAddress = new UserAddress() { Address = Helper.LocalIPAddress(), Port = AirClient.DefaultPort }, Status = receive ? "allowed" : "denied" })); networkStream.Write(buffer, 0, buffer.Length); } if (!receive) { throw new OperationCanceledException(); } int i = 0; long n = 0; bool cancel = false; long totalSize = 0, receivedTotal = 0, receivedCurrent = 0; foreach (SendFile file in sendFiles.Files) { totalSize += file.Size; } string folder = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\Air File Exchange\\"; Directory.CreateDirectory(folder); foreach (SendFile file in sendFiles.Files) { using (FileStream fileStream = new FileStream(folder + file.Name, FileMode.OpenOrCreate, FileAccess.Write)) { fileStream.SetLength(0); receivedCurrent = 0; if (i - n > 0) { fileStream.Write(bytes, (int)n, i - (int)n); receivedCurrent += i - (int)n; receivedTotal += i - (int)n; if (progress != null) { progress(file, ipEndPoint, receivedCurrent, file.Size, receivedTotal, totalSize, state, out cancel); } } while (!cancel && (i = networkStream.Read(bytes, 0, bytes.Length)) != 0) { n = file.Size - fileStream.Length; if (i <= n) { n = i; } fileStream.Write(bytes, 0, (int)n); receivedCurrent += n; receivedTotal += n; if (progress != null) { progress(file, ipEndPoint, receivedCurrent, file.Size, receivedTotal, totalSize, state, out cancel); } if (file.Size == fileStream.Length) { break; } } } if (cancel) { throw new OperationCanceledException(); } } if (totalSize > receivedTotal) { throw new OperationCanceledException(); } } finally { client.Close(); } }
public void SendFilesTo(IPAddress ipAddress, string[] files, object state, SendFilesProgress progress) { SendFiles sendFiles = new SendFiles(); sendFiles.Count = files.Length; sendFiles.UserAddress = new UserAddress() { Address = Helper.LocalIPAddress(), Port = DefaultPort }; sendFiles.Size = 0; long totalSize = 0, sentTotal = 0, sentCurrent = 0; foreach (string file in files) { FileInfo fileInfo = new FileInfo(file); sendFiles.Files.Add(new SendFile() { Name = fileInfo.Name, Size = fileInfo.Length }); sendFiles.Size += fileInfo.Length / 1024; totalSize += fileInfo.Length; } using (TcpClient tcpClient = new TcpClient()) { tcpClient.Connect(ipAddress, DefaultPort); byte[] buffer = Encoding.UTF8.GetBytes(Helper.XmlSerialize <SendFiles>(sendFiles)); NetworkStream networkStream = tcpClient.GetStream(); networkStream.Write(buffer, 0, buffer.Length); try { byte[] bytes = new byte[1024]; StringBuilder stringBuilder = new StringBuilder(); int i; while ((i = networkStream.Read(bytes, 0, bytes.Length)) != 0) { stringBuilder.Append(Encoding.UTF8.GetString(bytes, 0, i)); if (i < bytes.Length) { break; } } // Sending files? try { SendFilesData sendFilesData = Helper.XmlDeserialize <SendFilesData>(stringBuilder.ToString()); if ("allowed".Equals(sendFilesData.Status)) { bool cancel = false; foreach (string file in files) { // not open a file from user's desktop directory ??? using (FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read)) { sentCurrent = 0; while (!cancel && (i = fileStream.Read(bytes, 0, bytes.Length)) != 0) { networkStream.Write(bytes, 0, i); sentCurrent += i; sentTotal += i; if (progress != null) { progress(file, ipAddress, sentCurrent, fileStream.Length, sentTotal, totalSize, state, out cancel); } } } if (cancel) { throw new OperationCanceledException(); } } } else { throw new AirDeniedException(); } } finally { } } finally { } } }
private void linkLabel_sendFiles_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { SendFiles sendFiles = new SendFiles(); sendFiles.Show(); }