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); } } }
public void SendRequest(FlagsRequest numberRequest, string ip) { string ipAddress = GetHostIP(); byte[] request = new byte[Defines.RequestSize]; request[0] = (byte)GetNumberOfIp(ipAddress, 1); request[1] = (byte)GetNumberOfIp(ipAddress, 2); request[2] = (byte)GetNumberOfIp(ipAddress, 3); request[3] = (byte)GetNumberOfIp(ipAddress, 4); request[4] = (byte)numberRequest; byte[] nameInBytes = TranslateNameInBytes(myUserName, Defines.maxLenghtName); for (int i = Defines.startPositionNameInRequest, j = 0; (i < Defines.RequestSize) && (j < nameInBytes.Length); i++, j++) { request[i] = nameInBytes[j]; } RequestSender.Connect(ip, Defines.portGetRequests); if (RequestSender.Connected) { RequestSender.SendTo(request); } }