private void ReceiveCommand(byte[] recevedData)
        {
            ITransmittedObject command = Utilits.DeserializeFromByte <ITransmittedObject>(recevedData);

            if (command is NetworkAuthTransmitted)
            {
                string name = (command as NetworkAuthTransmitted).name;
                byte[] data;
                if (_setNameDelegate.Invoke(name))
                {
                    userName = name;
                    data     = recevedData;
                }
                else
                {
                    data = Utilits.SerializeToBytes(new NetworkAuthTransmitted("error"));
                }
                _clientSocket.Send(data);
                return;
            }
            if (command is TransmittedInfoObject)
            {
                TransmittedInfoObject obj = command as TransmittedInfoObject;
                byte[] data   = new byte[obj.length];
                int    readed = _clientSocket.Receive(data);
                if (obj.to == "")
                {
                    _sendToAllDelegate?.Invoke(recevedData, data);
                }
                else
                {
                    _sendToUserDelegate?.Invoke(recevedData, data, obj.to);
                }
            }
        }
示例#2
0
        private void ReceiveCommand(byte[] recevedData)
        {
            ITransmittedObject command = Utilits.DeserializeFromByte <ITransmittedObject>(recevedData);

            if (command is NetworkAuthTransmitted)
            {
                string result = (command as NetworkAuthTransmitted).name;
                _authResultDelegate.Invoke(result != "error");
                if (result == "error")
                {
                    _errorsDelegate?.Invoke("Пользователь с таким ником уже подключен");
                }
                return;
            }
            if (command is TransmittedInfoObject)
            {
                var    obj    = command as TransmittedInfoObject;
                byte[] data   = new byte[obj.length];
                int    readed = _clientSocket.Receive(data);
                if (obj.type == TransmittedDataType.Bytes)
                {
                    _receiveBytesDelegate?.Invoke(data);
                }
                else
                {
                    _receiveObjectDelegate?.Invoke(Utilits.DeserializeFromByte <ITransmittedObject>(data));
                }
                return;
            }
            _errorsDelegate?.Invoke("Приняты неизвестные данные");
        }