Beispiel #1
0
        public void FriendsCircleTest()
        {
            //int[][] friends = new int[3][];

            //friends[0] = new int[3] { 1, 1, 0 };
            //friends[1] = new int[3] { 1, 1, 0 };
            //friends[2] = new int[3] { 0, 0, 1 };
            //            friends[3] = new int[4] { 1, 0, 1, 1 };


            int[][] friends = new int[4][];

            friends[0] = new int[4] {
                1, 0, 0, 1
            };
            friends[1] = new int[4] {
                0, 1, 1, 0
            };
            friends[2] = new int[4] {
                0, 1, 1, 1
            };
            friends[3] = new int[4] {
                1, 0, 1, 1
            };

            FriendsSearch fs     = new FriendsSearch();
            int           groups = fs.FindCircleNum(friends);
        }
Beispiel #2
0
        public void Listen()
        {
            status = "Listen";

            socket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8001));
            while (true)
            {
                // получаем сообщение
                StringBuilder builder = new StringBuilder();
                int           bytes   = 0;              // количество полученных байтов
                byte[]        data    = new byte[5096]; // буфер для получаемых данных
                byte[]        data_s  = new byte[5096]; // буфер для получаемых данных

                //адрес, с которого пришли данные
                EndPoint remoteIp = new IPEndPoint(IPAddress.Any, 0);

                do
                {
                    bytes  = socket.ReceiveFrom(data, ref remoteIp);
                    status = "Пришли данные";
                    // чтения и записи данных в потоки.
                    Message       msg;
                    XmlSerializer formatter = new XmlSerializer(typeof(Message));
                    using (MemoryStream memstrm = new MemoryStream(data))
                        using (StreamReader memrdr = new StreamReader(memstrm))
                        {
                            msg = (Message)formatter.Deserialize(memrdr);
                        }
                    Executer(msg);
                    IPEndPoint remoteFullIp = remoteIp as IPEndPoint;
                    Console.WriteLine(msg.title + " " + remoteFullIp);
                }while (socket.Available > 0);
            }

            void Executer(Message msg)
            {
                switch (msg.title)
                {
                case "Register Success":
                    foreach (Information i in msg.data)
                    {
                        //if (i.header == "AuthToken")
                        //{
                        //    BinaryFormatter formatter = new BinaryFormatter();
                        //    // получаем поток, куда будем записывать сериализованный объект
                        //    using (FileStream fs = new FileStream("AuthToken.dat", FileMode.OpenOrCreate))
                        //    {
                        //        formatter.Serialize(fs, (AuthToken)i.info);
                        //    }
                        //}
                    }
                    break;

                case "Auth Success":
                {
                    foreach (Information i in msg.data)
                    {
                        if (i.header == "AuthToken")
                        {
                            BinaryFormatter formatter = new BinaryFormatter();
                            // получаем поток, куда будем записывать сериализованный объект
                            using (FileStream fs = new FileStream("AuthToken.dat", FileMode.OpenOrCreate))
                            {
                                formatter.Serialize(fs, (AuthToken)i.info);
                            }
                            GetInfo();
                        }
                    }
                    break;
                }

                case "GetInfo Success":


                    Application.Current.Dispatcher.Invoke((Action) delegate {
                        foreach (Information i in msg.data)
                        {
                            if (i.header == "Friends")
                            {
                                Friends = (ObservableCollection <AuthToken>)i.info;

                                CurrentAdresser = Friends[0];
                            }
                            if (i.header == "Friends request")
                            {
                                FriendsRequest = (ObservableCollection <AuthToken>)i.info;
                            }
                        }
                        CurrentPage = new index();
                    });
                    break;

                case "Posts":
                    if (CurrentAdresser.id == ((Post)msg.data[0].info).sender.id)
                    {
                        Application.Current.Dispatcher.Invoke((Action) delegate {
                            Posts.Add((Post)msg.data[0].info);
                        });
                    }
                    else
                    {
                        Application.Current.Dispatcher.Invoke((Action) delegate {
                            if (AT.id != ((Post)msg.data[0].info).sender.id)
                            {
                                ObservableCollection <AuthToken> v = new ObservableCollection <AuthToken>();
                                int index = -1;
                                int k     = 0;
                                foreach (AuthToken a in Friends)
                                {
                                    if (a.id == ((Post)msg.data[0].info).sender.id)
                                    {
                                        index = k;
                                    }
                                    k++;
                                }
                                foreach (AuthToken x in Friends)
                                {
                                    v.Add(x);
                                }
                                v[index].UnReadPosts++;
                                Friends.Clear();
                                foreach (AuthToken x in v)
                                {
                                    Friends.Add(x);
                                }
                            }
                        });
                    }
                    break;

                case "Return Posts":
                    onPropertyChanged("Posts");
                    Application.Current.Dispatcher.Invoke((Action) delegate {
                        Posts.Add((Post)msg.data[0].info);
                        ObservableCollection <AuthToken> v = new ObservableCollection <AuthToken>();
                        int index = Friends.IndexOf(currentadresser);
                        foreach (AuthToken x in Friends)
                        {
                            v.Add(x);
                        }
                        v[index].UnReadPosts = 0;
                        Friends.Clear();
                        foreach (AuthToken x in v)
                        {
                            Friends.Add(x);
                        }
                    });


                    break;

                case "Search Friend Result":
                    Application.Current.Dispatcher.Invoke((Action) delegate
                    {
                        int k = -1;
                        foreach (AuthToken a in FriendsRequest)
                        {
                            if (a.id == ((AuthToken)msg.data[0].info).id)
                            {
                                k = 1;
                            }
                        }
                        foreach (AuthToken a in Friends)
                        {
                            if (a.id == ((AuthToken)msg.data[0].info).id)
                            {
                                k = 1;
                            }
                        }
                        if (((AuthToken)msg.data[0].info).id != AT.id && k == -1)
                        {
                            FriendsSearch.Add((AuthToken)msg.data[0].info);
                        }
                    });
                    break;
                }
            }
        }