예제 #1
0
 //*************************************
 public bool Join_Swarm(string DstIP, string DstPort,string SrcIP, string SrcPort,string Username)
 {
     Thread t1 = null;
     Thread t2 = null;
     try
     {
         t1 = new Thread(new ThreadStart(mSocket.StartListening));
         t1.Start();
         t1.IsBackground = true;
         string cpu = "1";
         mSocket.SetIP(SrcIP);
         mSocket.SetPort(SrcPort);
         mSocket.SetName(Username);
         mSocket.SetCPU(cpu);
         MessageGenerator msg = new MessageGenerator();
         string mMsg = msg.msgConnectionRequest
             (mSocket.GetIP(), mSocket.GetPort(), mSocket.GetName(), mSocket.GetCPU());
         AsynchronousClient client = new AsynchronousClient();
         client.SetSingleMsg(DstIP, DstPort, mMsg);
         t2 = new Thread(new ThreadStart(client.SendSingleClient));
         t2.Start();
         t2.IsBackground = true;
         return true;
    
     }
     catch (Exception ex)
     {
         Debug.WriteLine(ex.Message);
         return false;
     }
     
 }
예제 #2
0
파일: Form1.cs 프로젝트: shranjan/pinac
        private void Send_ChatMsg(object sender, EventArgs e)
        {
            Thread t = null;
            MessageGenerator mMsg = new MessageGenerator();
            string msg = mMsg.msgChat(this.richTextBox1.Text, mSocket.GetIP() + ":" + mSocket.GetPort());
            AsynchronousClient client = new AsynchronousClient();
            client.SetMultiMsg(mSocket.GetIPtoPeer(), msg, mSocket.GetIP() + ":" + mSocket.GetPort());
            t = new Thread(new ThreadStart(client.SendMultiClient));
            t.Start();
            t.IsBackground = true;

            //m.HandleChatMessages("Peer1", richTextBox1.Text);
        }
예제 #3
0
파일: Form1.cs 프로젝트: shranjan/pinac
 private void Connection_Request(object sender, EventArgs e)
 {
     MessageGenerator msg = new MessageGenerator();
     string DstIp = textBox1.Text;
     string DstPort = textBox2.Text;
     string mMsg = msg.msgConnectionRequest
         (mSocket.GetIP(), mSocket.GetPort(), mSocket.GetName(), mSocket.GetCPU());
     AsynchronousClient client = new AsynchronousClient();
     client.SetSingleMsg(DstIp, DstPort,mMsg);
     Thread t = null;
     t = new Thread(new ThreadStart(client.SendSingleClient));
     t.Start();
     t.IsBackground = true;
     this.button1.Enabled = false;
     this.button2.Enabled = false;
     this.button3.Enabled = true;
 }
예제 #4
0
        public bool RunClicked(string myIP, string myPort)
        {
            string[] target = owner.Split(':');
            string ip = target[0];
            string port = target[1];
            MessageGenerator mg = new MessageGenerator();
            string request = mg.msgRunRequest(Pid, myIP + ":" + myPort);
            AsynchronousClient client = new AsynchronousClient();
            client.SetSingleMsg(ip, port, request);
            Thread t = new Thread(new ThreadStart(client.SendSingleClient));
            t.IsBackground = true;
            t.Start();
            while (StartFlag == "")
                Thread.Sleep(500);

            if (StartFlag == "Fail")
                return false;
            else
            {
                setMaster(myIP + ":" + myPort);
                setBackUp(selectBackUp());

                if (rnBtnClicked != null)
                    rnBtnClicked(true);
                if (permissions.Count > 1)
                {
                    List<string> endPoints = Peers();
                    Hashtable temp = conn.GetIPtoPeer();
                    Hashtable tempToSend = new Hashtable();

                    foreach (DictionaryEntry item in temp)
                    {
                        if (endPoints.Contains(item.Key.ToString()))
                        {
                            tempToSend.Add(item.Key, item.Value);
                        }
                    }        

                    AsynchronousClient client1 = new AsynchronousClient();
                    client1.SetMultiMsg(temp, getMasterBackUpXML(), myIP + ":" + myPort);
                    Thread t1 = new Thread(new ThreadStart(client1.SendMultiClient));
                    t1.IsBackground = true;
                    t1.Start();
                }
                return true;
            }
            
        }
예제 #5
0
파일: SwarmAPI.cs 프로젝트: shranjan/pinac
 public void Send_ChatMsg(string chatMsg, string Username)
 {
     try
     {
         Thread t = null;
         MessageGenerator mMsg = new MessageGenerator();
         //Chat username to be included
         string msg = mMsg.msgChat(chatMsg, mSocket.GetIP() + ":" + mSocket.GetPort());
         AsynchronousClient client = new AsynchronousClient();
         client.SetMultiMsg(mSocket.GetIPtoPeer(), msg, mSocket.GetIP() + ":" + mSocket.GetPort());
         t = new Thread(new ThreadStart(client.SendMultiClientChat));
         t.IsBackground = true;
         t.Start();
         
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Failed to send chat message.");
     }
 }
예제 #6
0
파일: SwarmAPI.cs 프로젝트: shranjan/pinac
        //*************************************
        public bool Join_Swarm(string DstIP, string DstPort, string SrcIP, string SrcPort, string Username)
        {
            Thread t1 = null;
            Thread t2 = null;
            try
            {
                string cpu = "1";
                mSocket.SetIP(SrcIP);
                mSocket.SetPort(SrcPort);
                mSocket.SetName(Username);
                mSocket.SetCPU(cpu);

                listenerThread = new Thread(new ThreadStart(mSocket.StartListening));
                listenerThread.IsBackground = true;
                listenerThread.Start();

                t1 = new Thread(new ThreadStart(mSocket.StarHeartBeat));
                t1.IsBackground = true;
                t1.Start();

                MessageGenerator msg = new MessageGenerator();
                string mMsg = msg.msgConnectionRequest
                    (mSocket.GetIP(), mSocket.GetPort(), mSocket.GetName(), mSocket.GetCPU());
                AsynchronousClient client = new AsynchronousClient();
                client.ErrorExcep += new AsynchronousClient.EventHandlerExcep(Error_Changed);
                client.SetSingleMsg(DstIP, DstPort, mMsg);
                // t2 = new Thread(new ThreadStart(client.SendSingleClient));
                client.SendSingleClient();
                // t2.Start();
                // t2.IsBackground = true;
                Thread.Sleep(2000);
                if (mSocket.GetIPtoPeer().Count > 0)
                    return true;
                else
                    return false;

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Failed to join swarm.");
                return false;
            }

        }
예제 #7
0
파일: server.cs 프로젝트: shranjan/SPINACH
 public void Disconnect()
 {
     MessageGenerator temp = new MessageGenerator();
     string msg = temp.msgDisconnect(mPeer.mIP + ":" + mPeer.mPort);
     Thread t = null;
     AsynchronousClient client = new AsynchronousClient();
     client.SetMultiMsg(GetIPtoPeer(), msg, GetIP() + ":" + GetPort());
     t = new Thread(new ThreadStart(client.SendMultiClient));
     t.Start();
     t.IsBackground = true;
 }
예제 #8
0
파일: server.cs 프로젝트: rkpandya/pinac
 public void StarHeartBeat()
 {
     MessageGenerator temp=new MessageGenerator();
     string HeartBeatRequestmsg = temp.msgHeartBeatRequest(GetIP() + ":" + GetPort());
     while (true)
     {
         try
         {
             if (IPtoPeer.Count > 1)
             {
                 foreach (string IP in IPtoPeer.Keys)
                 {
                     if (IP != GetIP() + ":" + GetPort())
                     {
                         Peer p = new Peer();
                         p = (Peer)IPtoPeer[IP];
                         string ip = p.mIP;
                         string port = p.mPort;
                         HeartbeatClient client = new HeartbeatClient();
                         client.SetSingleMsg(ip, port, HeartBeatRequestmsg);
                         client.HeartBeatException += new HeartbeatClient.EventHandlerHeartBeat(ShutDown);
                         Thread t;
                         string sendtime = DateTime.Now.ToLongTimeString() + ":" + DateTime.Now.Millisecond.ToString();
                         InsertSendTime(ip+":"+port,sendtime);
                         t = new Thread(new ThreadStart(client.SendSingleClient));
                         t.IsBackground = true;
                         t.Start();
                         Thread.Sleep(3000);
                     }
                 }
             }
         }
         catch (Exception e)
         {
             Console.WriteLine(e.ToString());
         }
     }
 }
예제 #9
0
파일: server.cs 프로젝트: shranjan/pinac
        public void Disconnect()
        {
            try
            {
                MessageGenerator temp = new MessageGenerator();
                string msg = temp.msgDisconnect(mPeer.mIP + ":" + mPeer.mPort);
                Thread t = null;
                AsynchronousClient client = new AsynchronousClient();
                client.SetMultiMsg(GetIPtoPeer(), msg, GetIP() + ":" + GetPort());

                t = new Thread(new ThreadStart(client.SendMultiClient));
                t.IsBackground = true;
                t.Start();
            }
            catch (Exception e)
            { Console.WriteLine(e.ToString()); }
        }
예제 #10
0
        public void getRunMsg(String msg)
        {
            try
            {
                MessageGenerator temp = new MessageGenerator();
                string pid = " ";
                string ipport = "";
                string reply = "";
                XDocument xml = XDocument.Parse(msg);
                var q = from x in xml.Elements() select x;
                //var q = from x in xml.Elements().Descendants("root") select x;
                pid = q.ElementAt(0).Attributes().ElementAt(1).Value;
                ipport = q.ElementAt(0).Attributes().ElementAt(2).Value;
                SwarmMemory sm = GetProg(pid.ToString());
                if (sm.getRunFlag() == false)
                {
                    sm.setRunFlag(true);
                    reply = temp.msgRunSucessReply(pid);
                }
                else
                {
                    reply = temp.msgRunFailReply(pid);
                }
                if (ipport != "")
                {
                    string[] target = ipport.Split(':');
                    string ip = target[0];
                    string port = target[1];
                    AsynchronousClient client = new AsynchronousClient();
                    client.SetSingleMsg(ip, port, reply);
                    Thread t;
                    t = new Thread(new ThreadStart(client.SendSingleClient));
                    t.IsBackground = true;
                    t.Start();
                }
            }
            catch (Exception e)
            { Console.WriteLine(e.ToString()); }

        }
예제 #11
0
 private void getHeartBeatRequestMsg(String msg)
 {
     try
     {
         Thread t;
         string ipport = GetIP() + ":" + GetPort();
         string target = " ";
         string reply = " ";
         XDocument xml = XDocument.Parse(msg);
         var q = from x in xml.Descendants()
                 where (x.Name == "root")
                 select x;
         foreach (var elem in q)
             target = elem.Value;
         MessageGenerator temp = new MessageGenerator();
         reply = temp.msgHeartBeatReply(ipport);
         AsynchronousClient client = new AsynchronousClient();
         string[] str = target.Split(':');
         string ip = str[0];
         string port = str[1];
         client.SetSingleMsg(ip, port, reply);
         t = new Thread(new ThreadStart(client.SendSingleClient));
         t.IsBackground = true;
         t.Start();
     }
     catch (Exception e)
     { Console.WriteLine(e.ToString()); }
     
 }
예제 #12
0
        private void getConnectionRequestMsg(String msg)
        {
            try
            {
                String ip;
                String port;
                String name;
                String cpu;
                Thread t1 = null;
                Thread t2 = null;
                Thread t3 = null;

                XDocument xml = XDocument.Parse(msg);
                var q = from x in xml.Elements("root").Descendants()
                        select x;
                foreach (var elem in q)
                {

                    ip = elem.Attributes().ElementAt(0).Value;
                    port = elem.Attributes().ElementAt(1).Value;
                    name = elem.Attributes().ElementAt(2).Value;
                    cpu = elem.Attributes().ElementAt(3).Value;
                    if (IPtoPeer.Count > 0)
                    {
                        if (!NametoIP.Contains(name))
                        {
                            InsertPeer(ip, port, name, cpu);
                            if (IPtoPeer.Count == 2)
                                SetBackup(ip + ":" + port);

                            MessageGenerator temp = new MessageGenerator();
                            string mMsg = temp.msgIPtoPeer(IPtoPeer);
                            string master = temp.msgMaster(GetMaster());
                            string backup = temp.msgBackup(GetBackup());
                            AsynchronousClient client1 = new AsynchronousClient();
                            client1.SetMultiMsg(IPtoPeer, mMsg, mPeer.mIP + ":" + mPeer.mPort);
                            t1 = new Thread(new ThreadStart(client1.SendMultiClient));
                            t1.IsBackground = true;
                            t1.Start();

                            AsynchronousClient client2 = new AsynchronousClient();
                            client2.SetSingleMsg(ip, port, master);
                            t2 = new Thread(new ThreadStart(client2.SendSingleClient));
                            t2.IsBackground = true;
                            t2.Start();

                            AsynchronousClient client3 = new AsynchronousClient();
                            client3.SetSingleMsg(ip, port, backup);
                            t3 = new Thread(new ThreadStart(client3.SendSingleClient));
                            t3.IsBackground = true;
                            t3.Start();

                        }
                        else
                        {
                            MessageGenerator temp = new MessageGenerator();
                            string error = temp.msgError("10:Username Already Exists");
                            AsynchronousClient client = new AsynchronousClient();
                            client.SetSingleMsg(ip, port, error);
                            t1 = new Thread(new ThreadStart(client.SendSingleClient));
                            t1.IsBackground = true;
                            t1.Start();

                        }
                    }
                    else
                    {
                        MessageGenerator temp = new MessageGenerator();
                        string error = temp.msgError("10:Peer is not a part of Swarm");
                        AsynchronousClient client = new AsynchronousClient();
                        client.SetSingleMsg(ip, port, error);
                        t1 = new Thread(new ThreadStart(client.SendSingleClient));
                        t1.IsBackground = true;
                        t1.Start();

                    }
                }
                showTable();
            }
            catch (Exception e)
            { Console.WriteLine(e.ToString()); }
        }