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); }
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; } } }