예제 #1
0
 private void GetRequest()
 {
     while (true)
     {
         byte[] request = RequestsReceiver.ReceiveTo(Defines.RequestSize);
         string ip      = request[0].ToString() + "." + request[1].ToString() + "." + request[2].ToString() + "." + request[3].ToString();
         if (ip == GetHostIP())
         {
             continue;
         }
         FlagsRequest numberRequest = (FlagsRequest)request[4];
         byte[]       nameInBytes   = new byte[Defines.maxLenghtName];
         for (int i = Defines.startPositionNameInRequest, j = 0; (i < Defines.RequestSize) && (j < nameInBytes.Length); i++, j++)
         {
             nameInBytes[j] = request[i];
         }
         string name = TranslateBytesInName(nameInBytes);
         if (numberRequest == FlagsRequest.FSetInfo)
         {
             AddUserIpAndChatNumber(ip, name);
         }
         if (numberRequest == FlagsRequest.FGetInfo)
         {
             SendRequest((byte)FlagsRequest.FSetInfo, ip);
             AddUserIpAndChatNumber(ip, name);
         }
         if (numberRequest == FlagsRequest.FTrySetUser)
         {
             if (!sendVideo.ContainUser(ip))
             {
                 receiveVideo.AddUser(ip, name);
                 receiveVideo.AddAnswerUser(ip);
             }
         }
         if (numberRequest == FlagsRequest.FAddUser)
         {
             AddNewUserInGroup(ip, name);
         }
         if (numberRequest == FlagsRequest.FRemoveUser)
         {
             RemoveUserWithGroup(ip);
         }
         if (numberRequest == FlagsRequest.FNoAddUser)
         {
             receiveVideo.RemoveCallUser(ip);
             RemoveUserWithGroup(ip);
         }
     }
 }