Ejemplo n.º 1
0
        public static List<myMessage> streamfile(string filename)
        {
            byte[] file;
            try
            {
                Console.WriteLine(filename);
               file = File.ReadAllBytes("files/"+filename);

            }
            catch(Exception e)
            {

                Console.WriteLine("error openeing file: "  );
                Console.ReadLine();
                return null;
            }

            //    Console.WriteLine(Encoding.Default.GetString(file));
            int file_length = file.Length;
             //   Console.WriteLine(file_length);
            int chunk_length = Program.BUFFER_SIZE ;

            List<myMessage> splitted = new List<myMessage>();
            myMessage buffer = new myMessage();
            int k=2;
            for (int i = 0; i < file_length; i =i+chunk_length)
            {
               // byte[] buffer = new byte[chunk_length];
                buffer = new myMessage();
                buffer.data = new byte[chunk_length];
                buffer.seq_no = k++ % 2;  //add 1 and 0 sequece no

                if (file_length < i + chunk_length)
                {
                    chunk_length = file_length - i;
                }
                Array.Copy(file, i, buffer.data, 0, chunk_length);

                splitted.Add(buffer);
                // Console.WriteLine(buffer[j]);
              //  Console.WriteLine(Encoding.Default.GetString(buffer.data));
              // return buffer;
                // Console.WriteLine("j:"+j+" "+Encoding.Default.GetString(buffer));
                // j++;
            }
               // foreach (myMessage x in splitted)
            return splitted ;
              //  Console.ReadLine();
        }
Ejemplo n.º 2
0
        static public List <myMessage> streamfile(string filename)
        {
            byte[] file;
            try
            {
                Console.WriteLine(filename);
                file = File.ReadAllBytes("files/" + filename);
            }
            catch (Exception e)
            {
                Console.WriteLine("error openeing file: ");
                Console.ReadLine();
                return(null);
            }

            //    Console.WriteLine(Encoding.Default.GetString(file));
            int file_length = file.Length;
            //   Console.WriteLine(file_length);
            int chunk_length = Program.BUFFER_SIZE;

            List <myMessage> splitted = new List <myMessage>();
            myMessage        buffer   = new myMessage();
            int k = 2;

            for (int i = 0; i < file_length; i = i + chunk_length)
            {
                // byte[] buffer = new byte[chunk_length];
                buffer        = new myMessage();
                buffer.data   = new byte[chunk_length];
                buffer.seq_no = k++ % 2;  //add 1 and 0 sequece no

                if (file_length < i + chunk_length)
                {
                    chunk_length = file_length - i;
                }
                Array.Copy(file, i, buffer.data, 0, chunk_length);

                splitted.Add(buffer);
                // Console.WriteLine(buffer[j]);
                //  Console.WriteLine(Encoding.Default.GetString(buffer.data));
                // return buffer;
                // Console.WriteLine("j:"+j+" "+Encoding.Default.GetString(buffer));
                // j++;
            }
            // foreach (myMessage x in splitted)
            return(splitted);
            //  Console.ReadLine();
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            byte[] bytes = null;



            myMessage m1 = new myMessage();


            using (var mystream = new MemoryStream())
            {
                var bf = new BinaryFormatter();
                bf.Serialize(mystream, m1);
                bytes = mystream.ToArray();
            }
            //string filename = "SamSmith.mp3";
            string filename = "SamSmith.mp3";

            bytes = Encoding.ASCII.GetBytes(filename);


            byte[] data = new byte[1024];
            int    recv;

            IPEndPoint endpoint = new IPEndPoint(
                IPAddress.Parse("127.0.0.1"), 950);

            Socket server = new Socket(AddressFamily.InterNetwork,
                                       SocketType.Dgram, ProtocolType.Udp);

            //    Console.WriteLine(welcome);
            //   data = Encoding.ASCII.GetBytes(welcome);

            // Console.WriteLine("msg = "+ Encoding.ASCII.GetString( bytes) );
            server.SendTo(bytes, bytes.Length, SocketFlags.None, endpoint);


            // server.SendTo(data, data.Length, SocketFlags.None, endpoint);
            // Console.WriteLine("welcome1");
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
            EndPoint   Remote = (EndPoint)sender;

            //  server.SendTo(data, data.Length, SocketFlags.None, endpoint);



            data = new byte[1024];

            int Size = 0;

            try
            {
                recv = server.ReceiveFrom(data, ref Remote);
                Size = int.Parse(Encoding.ASCII.GetString(data));
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: Maybe server is not running");

                //   return;
            }
            // Console.WriteLine("welcome3");
            Console.WriteLine("Message received from {0}:", Remote.ToString());
            //    Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));


            //      byte current_seq = 1;
            List <myMessage> messages = new List <myMessage>();

            byte[] ack = new byte[1];
            ack[0] = 1;

            int k = 0;

            for (int i = 0; i < Size; i++)
            {
                //receive data
                recv = server.ReceiveFrom(data, ref Remote);

                //convert from data to Message object
                myMessage msg_rec = (myMessage)deserialize(data);

                if (msg_rec.seq_no == ack[0])
                {
                    i--;
                    Console.WriteLine("DUPLICATE Packet");
                    //duplicate packet... dont add to list

                    if (simulateLoss())
                    {
                        // string  ack =zero_one(msg_rec.seq_no).ToString();

                        //send same ack again

                        //reverse ack , send, then reverse
                        ack[0] = (byte)zero_one(ack[0]);
                        server.SendTo(ack, 1, SocketFlags.None, Remote);
                        Console.WriteLine("Sent ACk  " + ack[0]);
                        ack[0] = (byte)zero_one(ack[0]);
                    }
                    else
                    {
                        ack[0] = (byte)zero_one(ack[0]);
                        Console.WriteLine("Loss ");


                        ack[0] = (byte)zero_one(ack[0]);
                    }
                }
                else
                {
                    // put in a list
                    Console.WriteLine("Received Packet");
                    messages.Add(msg_rec);

                    //send ACK
                    if (simulateLoss())
                    {
                        // string  ack =zero_one(msg_rec.seq_no).ToString();
                        server.SendTo(ack, 1, SocketFlags.None, Remote);

                        Console.WriteLine("Sent ACk " + ack[0]);
                        int x = zero_one(ack[0]);
                        ack[0] = (byte)x;
                    }
                    else
                    {
                        Console.WriteLine("Loss ");
                        ack[0] = (byte)zero_one(ack[0]);
                    }
                }
            }

            //here all data is done receving so
            //we want to covert from data to file
            // so  use the function you made to convert it to files

            bytestofile(messages, filename);


            Console.WriteLine("Stopping client");
            Console.ReadLine();
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            byte[] bytes = null;

            myMessage m1 = new myMessage();

            using (var mystream = new MemoryStream())
            {
                var bf = new BinaryFormatter();
                bf.Serialize(mystream, m1);
                bytes = mystream.ToArray();

            }
            //string filename = "SamSmith.mp3";
            string filename = "SamSmith.mp3";

            bytes = Encoding.ASCII.GetBytes(filename);

            byte[] data = new byte[1024];
            int recv;

            IPEndPoint endpoint = new IPEndPoint(
                            IPAddress.Parse("127.0.0.1"), 950);

            Socket server = new Socket(AddressFamily.InterNetwork,
                           SocketType.Dgram, ProtocolType.Udp);
            //    Console.WriteLine(welcome);
            //   data = Encoding.ASCII.GetBytes(welcome);

            // Console.WriteLine("msg = "+ Encoding.ASCII.GetString( bytes) );
            server.SendTo(bytes, bytes.Length, SocketFlags.None, endpoint);

            // server.SendTo(data, data.Length, SocketFlags.None, endpoint);
            // Console.WriteLine("welcome1");
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
            EndPoint Remote = (EndPoint)sender;

            //  server.SendTo(data, data.Length, SocketFlags.None, endpoint);

            data = new byte[1024];

            int Size = 0;

            try
            {
                recv = server.ReceiveFrom(data, ref Remote);
                Size = int.Parse(Encoding.ASCII.GetString(data));
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: Maybe server is not running");

                //   return;
            }
            // Console.WriteLine("welcome3");
            Console.WriteLine("Message received from {0}:", Remote.ToString());
            //    Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));

            //      byte current_seq = 1;
            List<myMessage> messages = new List<myMessage>();

            byte[] ack = new byte[1];
            ack[0] = 1;

            int k = 0;
            for (int i = 0; i < Size; i++)
            {

                //receive data
                recv = server.ReceiveFrom(data, ref Remote);

                //convert from data to Message object
                myMessage msg_rec = (myMessage)deserialize(data);

                if (msg_rec.seq_no == ack[0])
                {
                    i--;
                    Console.WriteLine("DUPLICATE Packet");
                    //duplicate packet... dont add to list

                    if (simulateLoss())
                    {
                        // string  ack =zero_one(msg_rec.seq_no).ToString();

                        //send same ack again

                        //reverse ack , send, then reverse
                        ack[0] = (byte)zero_one(ack[0]);
                        server.SendTo(ack, 1, SocketFlags.None, Remote);
                        Console.WriteLine("Sent ACk  " + ack[0]);
                        ack[0] = (byte)zero_one(ack[0]);

                    }
                    else
                    {
                        ack[0] = (byte)zero_one(ack[0]);
                        Console.WriteLine("Loss ");

                        ack[0] = (byte)zero_one(ack[0]);
                    }

                }
                else
                {
                    // put in a list
                    Console.WriteLine("Received Packet");
                    messages.Add(msg_rec);

                    //send ACK
                    if (simulateLoss())
                    {
                        // string  ack =zero_one(msg_rec.seq_no).ToString();
                        server.SendTo(ack, 1, SocketFlags.None, Remote);

                        Console.WriteLine("Sent ACk " + ack[0]);
                        int x = zero_one(ack[0]);
                        ack[0] = (byte)x;

                    }
                    else
                    {
                        Console.WriteLine("Loss ");
                        ack[0] = (byte)zero_one(ack[0]);
                    }

                }

            }

            //here all data is done receving so
            //we want to covert from data to file
            // so  use the function you made to convert it to files

            bytestofile(messages, filename);

            Console.WriteLine("Stopping client");
            Console.ReadLine();
        }