Пример #1
0
        static void Send(string pathToFile, string endAddress)
        {
            // Create socket
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            // Create image of file
            FileImage fi = null;

            try
            {
                fi = new FileImage(pathToFile);
            }
            // I know these are pretty sweaping catches but we really don't
            // need to handle specific exceptions we just need to keep going
            catch (Exception e)
            {
                Error(e.GetType().ToString() + " - " + e.Message, false);
                return;
            }

            // Setup network endpoint
            IPAddress  ip = IPAddress.Parse(endAddress);
            IPEndPoint ep = new IPEndPoint(ip, 13450);

            try
            {
                // Try to connect to end point
                Console.Write("Connecting to [{0}]...", ep.ToString());
                LoadingSpinner.Start();
                sock.Connect(ep);
                LoadingSpinner.Stop();
            }
            catch (Exception e)
            {
                // Incase we exceptioned before we could stop the spinner
                LoadingSpinner.Stop();
                Error(e.GetType().ToString() + " - " + e.Message);
            }

            try
            {
                // Serialise FileImage object onto the socket's network stream
                Console.Write("Sending file [{0}]...", fi.Name);
                LoadingSpinner.Start();
                NetworkStream objStream = SerializeFileImage(fi, sock);
                LoadingSpinner.Stop();
                Console.WriteLine("Transfer complete. ");
            }
            catch (Exception e)
            {
                LoadingSpinner.Stop();
                Error(e.GetType().ToString() + " - " + e.Message, false);
            }

            // Clean up
            sock.Shutdown(SocketShutdown.Both);
            sock.Close();
            fi.Dispose();
            Console.WriteLine("Connection closed.");
        }
Пример #2
0
        static FileImage DeserializeFileImage(NetworkStream netStream)
        {
            // Deseralize our object from the stream
            IFormatter formatter = new BinaryFormatter();
            FileImage  fi        = (FileImage)formatter.Deserialize(netStream);

            // Clean up
            netStream.Close();

            // Return the deserialized object
            return(fi);
        }
Пример #3
0
        static NetworkStream SerializeFileImage(FileImage fi, Socket sock)
        {
            // Create a stream for storing our serialized object
            NetworkStream netStream = new NetworkStream(sock);

            // Serialize the object onto the stream transport medium
            IFormatter formatter = new BinaryFormatter();

            formatter.Serialize(netStream, fi);

            // Clean up
            netStream.Close();

            // Return the network stream containing our serialized object
            return(netStream);
        }
Пример #4
0
        static void Recieve(string transferPath, string address)
        {
            // Create listener for port 11000
            TcpListener listener = new TcpListener(IPAddress.Parse(address), 13450);

            listener.Start();
            Console.WriteLine("Listening on {0}...", listener.LocalEndpoint.ToString());

            // Connection loop
            while (true)
            {
                try
                {
                    using (var client = listener.AcceptTcpClient())
                        using (var stream = client.GetStream())
                        {
                            // Deserialise stream
                            Console.Write("[{0}] is sending a file, processing...", client.Client.RemoteEndPoint.ToString().Split(':')[0]);
                            LoadingSpinner.Start();
                            using (FileImage fi = DeserializeFileImage(stream))
                            {
                                LoadingSpinner.Stop();
                                Console.WriteLine("Transfer complete.");

                                // Create transfered file
                                Console.Write("Creating \"" + fi.Name + "\"...");
                                fi.CreateFile(transferPath);
                            }
                        }
                }
                catch (Exception e)
                {
                    Error(e.GetType().ToString() + " - " + e.Message, false);
                }
            }
        }