Ejemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="file_server"/> class.
        /// Opretter en socket.
        /// Venter på en connect fra en klient.
        /// Modtager filnavn
        /// Finder filstørrelsen
        /// Kalder metoden sendFile
        /// Lukker socketen og programmet
        /// </summary>
        private file_server()
        {
            TcpListener serverSocket = new TcpListener(new IPEndPoint(IPAddress.Any, PORT));
            TcpClient   clientSocket = default(TcpClient);

            serverSocket.Start();
            Console.WriteLine(" >> Server Started");


            while (true)
            {
                try
                {
                    clientSocket = serverSocket.AcceptTcpClient();
                    NetworkStream networkStream  = clientSocket.GetStream();
                    string        dataFromClient = LIB.readTextTCP(networkStream);
                    Console.WriteLine(" >> Data from client - " + dataFromClient);
                    if (LIB.check_File_Exists(dataFromClient) != 0)
                    {
                        FileInfo fileInfo = new FileInfo(dataFromClient);
                        long     fileSize = fileInfo.Length;
                        LIB.writeTextTCP(networkStream, fileSize.ToString());

                        sendFile(dataFromClient, fileSize, networkStream);
                    }
                    else
                    {
                        LIB.writeTextTCP(networkStream, "" + 0);
                    }

                    networkStream.Flush();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
            clientSocket.Close();
            serverSocket.Stop();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="file_server"/> class.
        /// Opretter en socket.
        /// Venter på en connect fra en klient.
        /// Modtager filnavn
        /// Finder filstørrelsen
        /// Kalder metoden sendFile
        /// Lukker socketen og programmet
        /// </summary>
        private file_server()
        {
            // Starts server and accepts a client
            Console.WriteLine("Listening for client ..");

            TcpListener serverSocket = new TcpListener(IPAddress.Any, PORT);
            TcpClient   clientSocket = default(TcpClient);

            serverSocket.Start();
            clientSocket = serverSocket.AcceptTcpClient();

            Console.WriteLine("Accepted connection from client");

            // Get the network file stream
            NetworkStream clientStream = clientSocket.GetStream();

            string filename = LIB.readTextTCP(clientStream);
            long   fileSize = LIB.check_File_Exists(filename);

            while (fileSize == 0)
            {
                string errorMsg = "File '" + filename + "' not found";
                Console.WriteLine(errorMsg);

                LIB.writeTextTCP(clientStream, fileSize.ToString());

                filename = LIB.readTextTCP(clientStream);
                fileSize = LIB.check_File_Exists(filename);
            }

            Console.WriteLine("Filename: " + filename);
            Console.WriteLine("Size: " + fileSize);
            LIB.writeTextTCP(clientStream, fileSize.ToString());

            sendFile(filename, clientStream);

            clientSocket.Close();
            serverSocket.Stop();
        }
        private file_server()
        {
            Socket ourSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            ourSocket.Bind(new IPEndPoint(IPAddress.Any, PORT));

            while (true)
            {
                ourSocket.Listen(0);

                Socket acceptSocket = ourSocket.Accept();

                Console.WriteLine("Someone connected!");

                NetworkStream myNetworkStream = new NetworkStream(acceptSocket);

                string ReceivedFilePath = LIB.readTextTCP(myNetworkStream);

                long fileSize = LIB.check_File_Exists(ReceivedFilePath);
                Console.WriteLine($"Received file path: {ReceivedFilePath}");
                Console.WriteLine($"Filesize: {fileSize} bytes");

                if (fileSize == 0)
                {
                    Console.WriteLine("Could not find file.");
                    LIB.writeTextTCP(myNetworkStream, "Error: Could not find file.");
                }
                else
                {
                    sendFile(ReceivedFilePath, fileSize, myNetworkStream);
                }

                acceptSocket.Close();
            }

            //ourSocket.Close();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="file_server"/> class.
        /// Opretter en socket.
        /// Venter på en connect fra en klient.
        /// Modtager filnavn
        /// Finder filstørrelsen
        /// Kalder metoden sendFile
        /// Lukker socketen og programmet... IKKE
        /// </summary>
        private file_server()
        {
            String dataDir = "/root/ServerData/";

            var serverSocket = new TcpListener(IPAddress.Any, PORT);               //Listens on PORT
            var clientSocket = default(TcpClient);

            serverSocket.Start();
            Console.WriteLine("Server started");
            clientSocket = serverSocket.AcceptTcpClient();
            Console.WriteLine("Accept connection from client");

            var networkStream = clientSocket.GetStream();               //Open a stream

            String fileName;
            long   fileSize;

            do
            {
                Console.WriteLine("Reading filename");
                fileName = LIB.readTextTCP(networkStream);
                Console.WriteLine("Filename: " + fileName);
                fileSize = LIB.check_File_Exists(dataDir + fileName);
                Console.WriteLine("Filepath: " + dataDir + fileName);
                Console.WriteLine("Filesize: " + fileSize);

                LIB.writeTextTCP(networkStream, fileSize.ToString("0"));
            } while (fileSize == 0);

            sendFile(dataDir + fileName, fileSize, networkStream);

            //Cleaning
            clientSocket.Close();
            serverSocket.Stop();
            Console.WriteLine("Exit");
        }
Ejemplo n.º 5
0
        private file_server()
        {
            var localAddress = IPAddress.Parse("0.0.0.0");

            Console.WriteLine("CHOOSE IP ADDRESS FOR THE SERVER...");
            Console.WriteLine("1. Default Local Host IP (127.0.0.1)");
            Console.WriteLine("2. Default Remote Host IP (10.0.0.1)");
            Console.WriteLine("3. Enter Custom IP Address.\n");
            Console.Write("Your choice: ");
            var choice = int.Parse(Console.ReadLine());

            switch (choice)
            {
            case 1:
                localAddress = IPAddress.Parse("127.0.0.1");
                Console.WriteLine("Server IP address is now: 127.0.0.1\n");
                break;

            case 2:
                localAddress = IPAddress.Parse("10.0.0.1");
                Console.WriteLine("Server IP address is now: 10.0.0.1\n");
                break;

            case 3:
                Console.Write("Type custom IP address here: ");
                while (!IPAddress.TryParse(Console.ReadLine(), out localAddress))
                {
                    Console.WriteLine("Invalid IP address, please try again.\n");
                    Console.Write("Type custom IP address here: ");
                }
                Console.WriteLine("Server IP Address is now: " + localAddress);
                break;
            }

            try
            {
                var server = new TcpListener(localAddress, PORT);

                while (true)
                {
                    server.Start();
                    Console.WriteLine("Server: Started!");

                    Console.WriteLine("Server: Waiting for new connection...");
                    var client = server.AcceptTcpClient();
                    Console.WriteLine("Server: Client connected!");

                    // Modtager besked fra Client:
                    var stream = client.GetStream();

                    // Reads data from the client and prints it to console:
                    var fileName = LIB.readTextTCP(stream);
                    Console.WriteLine($"Stream received: {fileName}");

                    // Checks to see if file exists and returns its size:
                    var fileSize = LIB.check_File_Exists(fileName);

                    LIB.writeTextTCP(stream, fileSize.ToString());

                    if (fileSize != 0)
                    {
                        SendFile(fileName, fileSize, stream);
                    }
                    else
                    {
                        Console.WriteLine("File doesn't exist!");
                    }

                    client.Close();
                    server.Stop();
                }
            }

            catch (SocketException e)
            {
                Console.WriteLine($"Socket exception: {e}");
                Console.ReadKey();
                // Does server.Stop() run? Or does this potentially create memory leak???
            }
        }