using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading.Tasks; using System.Net; using System.Net.Sockets; using System.Net.NetworkInformation; using System.IO; namespace FileSharingClient { public partial class Form1 : Form { private static string shortFileName = ""; private static string fileName = ""; public Form1() { InitializeComponent(); } private void btnBrowse_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Title = "File Sharing Client"; dlg.ShowDialog(); txtFile.Text = dlg.FileName; fileName = dlg.FileName; shortFileName = dlg.SafeFileName; } private void btnSend_Click(object sender, EventArgs e) { string ipAddress = txtIPAddress.Text; int port = int.Parse(txtHost.Text); string fileName = txtFile.Text; Task.Factory.StartNew(() => SendFile(ipAddress,port, fileName,shortFileName)); MessageBox.Show("File Sent"); } public void SendFile(string remoteHostIP, int remoteHostPort , string longFileName, string shortFileName) { try { if(!string.IsNullOrEmpty(remoteHostIP)) { byte[] fileNameByte = Encoding.ASCII.GetBytes (shortFileName); byte[] fileData = File.ReadAllBytes(longFileName); byte[] clientData = new byte[4 + fileNameByte.Length + fileData.Length]; byte[] fileNameLen = BitConverter.GetBytes( fileNameByte.Length); fileNameLen.CopyTo(clientData, 0); fileNameByte.CopyTo(clientData, 4); fileData.CopyTo(clientData, 4 + fileNameByte.Length); TcpClient clientSocket = new TcpClient(remoteHostIP, remoteHostPort); NetworkStream networkStream = clientSocket.GetStream(); networkStream.Write(clientData, 0, clientData.GetLength (0)); networkStream.Close(); } } catch { } } } }
System.Threading.Tasks;
System.Net; System.Net.Sockets; System.Net.NetworkInformation;
System.IO;
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Net.NetworkInformation; using System.IO; using System.Threading.Tasks; namespace FileSharingServer { public partial class Form1 : Form { public delegate void FileRecievedEventHandler(object source, string fileName); public event FileRecievedEventHandler NewFileRecieved; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.NewFileRecieved+=new FileRecievedEventHandler (Form1_NewFileRecieved); } private void Form1_NewFileRecieved(object sender, string fileName) { this.BeginInvoke( new Action( delegate() { MessageBox.Show("New File Recieved\n"+fileName); System.Diagnostics.Process.Start("explorer", @"c:\"); })); } private void btnListen_Click(object sender, EventArgs e) { int port = int.Parse(txtHost.Text); Task.Factory.StartNew(() => HandleIncomingFile(port)); MessageBox.Show("Listening on port"+port); } public void HandleIncomingFile(int port) { try { TcpListener tcpListener = new TcpListener(port); tcpListener.Start(); while (true) { Socket handlerSocket = tcpListener.AcceptSocket(); if (handlerSocket.Connected) { string fileName = string.Empty; NetworkStream networkStream = new NetworkStream (handlerSocket); int thisRead = 0; int blockSize = 1024; Byte[] dataByte = new Byte[blockSize]; lock (this) { string folderPath = @"c:\"; handlerSocket.Receive(dataByte); int fileNameLen = BitConverter.ToInt32(dataByte, 0); fileName = Encoding.ASCII.GetString(dataByte, 4, fileNameLen); Stream fileStream = File.OpenWrite(folderPath + fileName); fileStream.Write(dataByte, 4+fileNameLen,( 1024-(4+fileNameLen))); while (true) { thisRead = networkStream.Read(dataByte, 0, blockSize); fileStream.Write(dataByte, 0,thisRead); if (thisRead == 0) break; } fileStream.Close(); } if (NewFileRecieved != null) { NewFileRecieved(this, fileName); } handlerSocket = null; } } } catch { } } } }
Share this page on
42
Comment(s)
90
People Like(s) This Page
Permalink
comments powered by Disqus
Older Comment(s)