Ejemplo n.º 1
0
    public void Main()
    {
        try
        {
            TcpClient    tcpclnt      = new TcpClient();
            FileProcesor fileProcesor = new FileProcesor();
            String       str;
            Stream       stm;
            byte[]       ba, bb;
            int          k;

            ASCIIEncoding asen = new ASCIIEncoding();

            // Connecting witch server and sending clientIP
            String serverIP;
            Console.WriteLine("Czy połączenie jest pośredniczone przez server? (Y/N)");
            if (Console.ReadLine() == "Y")
            {
                Console.WriteLine("Podaj nazwe Servera:");
                serverIP = Console.ReadLine();

                Console.WriteLine("Connecting.....");
                tcpclnt.Connect(HostNameToIP(serverIP), connectionport);
                // use the ipaddress as in the server program

                Console.WriteLine("Connected");

                //This part is only walid when connectiong external port
                Console.WriteLine("PodajIP clienta do transferu : ");

                str = Console.ReadLine();
                stm = tcpclnt.GetStream();

                asen = new ASCIIEncoding();
                ba   = asen.GetBytes(str);
                Console.WriteLine("Transmitting.....");

                stm.Write(ba, 0, ba.Length);

                bb = new byte[byteBuffer];
                k  = stm.Read(bb, 0, 1024);

                for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(bb[i]));
                }
            }
            else
            {
                Console.WriteLine("Podaj adres IPServera:");
                serverIP = Console.ReadLine();

                Console.WriteLine("Connecting.....");
                tcpclnt.Connect(IPAddress.Parse(serverIP), connectionport);
                // use the ipaddress as in the server program

                Console.WriteLine("Connected");
            }

            //Sending name and extension
            String filePath;
            Console.WriteLine("Podaj sciezke pliku do wyslania:");
            filePath     = Console.ReadLine();
            fileProcesor = new FileProcesor(filePath);

            Console.WriteLine("Sending name and extension...");

            str = fileProcesor.getNameAndExtension();
            stm = tcpclnt.GetStream();
            Console.WriteLine(str);

            asen = new ASCIIEncoding();
            ba   = asen.GetBytes(str);
            Console.WriteLine("Transmitting.....");

            stm.Write(ba, 0, ba.Length);

            bb = new byte[byteBuffer];
            k  = stm.Read(bb, 0, byteBuffer);

            for (int i = 0; i < k; i++)
            {
                Console.Write(Convert.ToChar(bb[i]));
            }

            // Sending package number
            Console.WriteLine("Sending package number...");

            str = fileProcesor.numOfPacket.ToString();
            stm = tcpclnt.GetStream();
            Console.WriteLine(str);

            asen = new ASCIIEncoding();
            ba   = asen.GetBytes(str);
            Console.WriteLine("Transmitting.....");

            stm.Write(ba, 0, ba.Length);

            bb = new byte[byteBuffer];
            k  = stm.Read(bb, 0, byteBuffer);

            for (int i = 0; i < k; i++)
            {
                Console.Write(Convert.ToChar(bb[i]));
            }

            //Sending file
            var packages = fileProcesor.GetPackages();
            Console.WriteLine("Sending " + fileProcesor.numOfPacket + " packages...");
            foreach (var package in packages)
            {
                //Sending key ==>
                Console.WriteLine("Sending key value...");

                str = package.Key.ToString();
                stm = tcpclnt.GetStream();
                Console.WriteLine(str);

                asen = new ASCIIEncoding();
                ba   = asen.GetBytes(str);
                Console.WriteLine("Transmitting.....");

                stm.Write(ba, 0, ba.Length);

                bb = new byte[byteBuffer];
                k  = stm.Read(bb, 0, byteBuffer);

                for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(bb[i]));
                }
                // <== Sending key
                // Sending package ==>
                Console.WriteLine("Sending package " + package.Key);


                stm = tcpclnt.GetStream();

                ba = package.Value;
                Console.WriteLine(ba);
                Console.WriteLine("Transmitting.....");

                stm.Write(ba, 0, ba.Length);

                bb = new byte[byteBuffer];
                k  = stm.Read(bb, 0, byteBuffer);

                for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(bb[i]));
                }
                // <== Sending package
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Error..... " + e.StackTrace);
        }
    }
Ejemplo n.º 2
0
    public void Main()
    {
        try
        {
            // Setting client reciver IP
            IPAddress ipAd = IPAddress.Parse(GetLocalIPAddress());
            // use local m/c IP address, and
            // use the same in the client

            TcpListener myList = new TcpListener(ipAd, connectionport);
            Console.WriteLine("Starting ...");

            myList.Start();

            Console.WriteLine("The ReciveClient is running at port " + connectionport.ToString() + "...");
            Console.WriteLine("The local End point is  :" +
                              myList.LocalEndpoint);
            Console.WriteLine("Waiting for a connection.....");

            Socket s = myList.AcceptSocket();
            Console.WriteLine("Connection accepted from " + s.RemoteEndPoint);

            // Reciving nameand Extension
            String nameAndExtension = "";
            byte[] b = new byte[byteBuffer];
            int    k = s.Receive(b);
            Console.WriteLine("Recieved...");
            for (int i = 0; i < k; i++)
            {
                Console.Write(Convert.ToChar(b[i]));
                nameAndExtension += Convert.ToChar(b[i]);
            }

            ASCIIEncoding asen = new ASCIIEncoding();
            s.Send(asen.GetBytes("The string was recieved by the server."));
            Console.WriteLine("\nSent Acknowledgement");

            //Reciving num of packages
            String numPackageString = "";
            b = new byte[byteBuffer];
            k = s.Receive(b);
            Console.WriteLine("Recieved...");
            for (int i = 0; i < k; i++)
            {
                Console.Write(Convert.ToChar(b[i]));
                numPackageString += Convert.ToChar(b[i]);
            }

            asen = new ASCIIEncoding();
            s.Send(asen.GetBytes("The string was recieved by the server."));
            Console.WriteLine("\nSent Acknowledgement");

            //Creating instance of FileProcessor
            FileProcesor fileProcesor = new FileProcesor(nameAndExtension, Int32.Parse(numPackageString));

            //Main package recive loop
            for (int j = 0; j < Int32.Parse(numPackageString); j++)
            {
                //Reciving key
                String key = "";
                b = new byte[byteBuffer];
                k = s.Receive(b);
                Console.WriteLine("Recieved...");
                for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(b[i]));
                    key += Convert.ToChar(b[i]);
                }

                asen = new ASCIIEncoding();
                s.Send(asen.GetBytes("The string was recieved by the server."));
                Console.WriteLine("\nSent Acknowledgement");

                //Reciving package
                b = new byte[byteBuffer];
                k = s.Receive(b);
                Console.WriteLine("Recieved...");
                for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(b[i]));
                }

                asen = new ASCIIEncoding();
                s.Send(asen.GetBytes("The string was recieved by the server."));
                Console.WriteLine("\nSent Acknowledgement");

                //Adding package to file processor
                fileProcesor.insertPackage(Int32.Parse(key), b);
            }

            //Combining packages
            Console.WriteLine("All packages recived. Attempting to combine file...");
            fileProcesor.combineFile(Int32.Parse(numPackageString));

            /* clean up */
            s.Close();
            myList.Stop();
            Console.WriteLine("Procedure compleated");
        }
        catch (Exception e)
        {
            Console.WriteLine("Error..... " + e.Message + e.StackTrace);
        }
    }