Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- using System.IO;
- using System.Threading;
- namespace Net_Send_File
- {
- class Program
- {
- static string input;
- static void Main(string[] args)
- {
- while (true)
- {
- Console.Clear();
- Console.Title = "Main menu";
- Console.WriteLine("[1] Use as server");
- Console.WriteLine("[2] Use as client");
- input = Console.ReadLine();
- if (input.Length == 0)
- continue;
- else if (input[0] == '1')
- new Server();
- else if (input[0] == '2')
- new Client();
- else
- continue;
- }
- }
- class Server
- {
- private TcpListener listener;
- private IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 8000);
- private bool active;
- public Server()
- {
- Console.Clear();
- Console.Title = "Server";
- Main();
- }
- private void Main()
- {
- listener = new TcpListener(ipep);
- try
- {
- listener.Start();
- active = true;
- ListenForConnections();
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Console.ReadLine();
- }
- }
- private void ListenForConnections()
- {
- Console.Clear();
- Console.WriteLine("Listening for connections...");
- while (active)
- {
- TcpClient client = listener.AcceptTcpClient();
- Console.WriteLine("Connection @ {0}", TCPIP(client));
- new Thread(new ParameterizedThreadStart(HandleClientData)).Start(client);
- }
- }
- private void HandleClientData(object _c)
- {
- TcpClient c = (TcpClient)_c;
- string ipaddr = TCPIP(c);
- NetworkStream s = c.GetStream();
- byte[] buffer = new byte[1024 * 10];
- int bytesRead;
- while (active)
- {
- bytesRead = 0;
- try
- {
- bytesRead = s.Read(buffer, 0, buffer.Length);
- }
- catch (Exception ex)
- {
- Console.WriteLine("Socket error @ {0}:\r\n{1}", ipaddr, ex.Message);
- Console.ReadLine();
- break;
- }
- if (bytesRead == 0)
- {
- Console.WriteLine("Disconnected @ {0}", ipaddr);
- break;
- }
- string dataStr = Encoding.ASCII.GetString(buffer, 0, buffer.Length);
- using (var fs = File.OpenWrite("recieved.jpg"))
- {
- fs.Write(buffer, 0, buffer.Length);
- fs.Close();
- }
- }
- }
- private string TCPIP(TcpClient c)
- {
- return ((IPEndPoint)c.Client.RemoteEndPoint).Address.ToString();
- }
- }
- class Client
- {
- private TcpClient client;
- private IPEndPoint ipep;
- private int port;
- public Client()
- {
- Console.Clear();
- Console.Title = "Client";
- bool error = false;
- while (true)
- {
- Console.WriteLine("IPEndPoint: ");
- string input = Console.ReadLine();
- if (!input.Contains(':'))
- {
- Console.WriteLine("IPEndPoint in bad format");
- break;
- }
- string[] s1 = input.Split(':');
- IPAddress ipaddr;
- if (!IPAddress.TryParse(s1[0], out ipaddr) || !int.TryParse(s1[1], out port))
- {
- Console.WriteLine("IPEndPoint in bad format");
- Console.ReadLine();
- error = true;
- break;
- }
- ipep = new IPEndPoint(ipaddr, port);
- try
- {
- client = new TcpClient();
- client.Connect(ipep);
- }
- catch (Exception ex)
- {
- Console.WriteLine("Unable to connect\r\nReason: {0}", ex.Message);
- Console.ReadLine();
- error = true;
- }
- break;
- }
- while (!error)
- {
- Console.Clear();
- Console.WriteLine("File path: ");
- string filePath = Console.ReadLine();
- if (File.Exists(filePath) == false)
- {
- Console.WriteLine("File does not exist\r\nPress ENTER to try again");
- Console.ReadLine();
- }
- byte[] buffer;
- using (var fs = File.OpenRead(filePath))
- {
- buffer = new byte[fs.Length];
- fs.Read(buffer, 0, buffer.Length);
- fs.Close();
- }
- if (SendData(buffer))
- {
- Console.WriteLine("File sent\r\nFile size: {0} KB", (buffer.Length / 1024));
- Console.ReadLine();
- }
- break;
- }
- }
- private bool SendData(byte[] data)
- {
- try
- {
- using (NetworkStream ns = client.GetStream())
- {
- ns.Write(data, 0, data.Length);
- ns.Close();
- }
- return true;
- }
- catch (Exception ex)
- {
- Console.WriteLine("Unable to send file\r\nReason: {0}\r\nDetailed:\r\n{1}", ex.Message, ex.ToString());
- Console.ReadLine();
- return false;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement