Ejemplo n.º 1
0
        private async Task ReceiveData(Action <byte[]> reciever)
        {
            var ReceiveData = await _Socket.ReceiveAsync();

            if (ReceiveData != null && ReceiveData.Length > 0)
            {
                var clientData = ShareClientData.FromBytes(ReceiveData);
                if (clientData != null)
                {
                    _Manager.SetRecieveDataSize(clientData.Size);
                    AnalyzeReceiveData(clientData, reciever);
                }
            }
        }
Ejemplo n.º 2
0
            private Connection AcceptInternal(IConnectionSocket socket)
            {
                var recieveData           = Recive(socket);
                var recieveConnectionData = ShareClientData.FromBytes(recieveData.RecieveBytes);

                if (recieveConnectionData == null)
                {
                    _Logger.Info($"ShareClientData Convert Fail.");
                    return(null);
                }
                else if (recieveConnectionData.Header.DataType != SendDataType.System)
                {
                    _Logger.Info($"ShareClientData Type {recieveConnectionData?.Header.DataType}.");
                    return(null);
                }

                var connectionData = ConnectionData.FromByte(recieveConnectionData.DataPart);

                if (connectionData == null)
                {
                    _Logger.Info($"ConnectionData Convert Fail.");
                    return(null);
                }

                var remoteEndPoint     = recieveData.ReciveEndPoint;
                var connectionResponse = _AcceptRequest.Invoke(remoteEndPoint, connectionData);

                _Logger.Info($"AcceptRequest is {connectionResponse.IsConnect}.");

                var responseData = new ShareClientData(ShareClientHeader.CreateSystem((uint)connectionResponse.Size), connectionResponse.ToByte());

                Send(socket, remoteEndPoint, responseData);

                Connection connection = null;

                if (connectionResponse.IsConnect)
                {
                    _Logger.Info($"Accept Succes.");
                    connection = new Connection(connectionResponse.ConnectionData.CleintSpec, socket.LocalEndPoint, remoteEndPoint);
                }
                return(connection);
            }
Ejemplo n.º 3
0
            private Connection ConnectInternal(IConnectionSocket socket, IPEndPoint connectEndPoint, ConnectionData connectionData)
            {
                _Logger.Info($"Start Connect. -> {connectEndPoint}");

                var sendData = new ShareClientData(ShareClientHeader.CreateSystem((uint)connectionData.Size), connectionData.ToByte());

                Send(socket, connectEndPoint, sendData);

                var recieveData  = Recive(socket);
                var responseData = ShareClientData.FromBytes(recieveData.RecieveBytes);

                if (responseData == null)
                {
                    _Logger.Info($"ShareClientData Convert Fail.");
                    return(null);
                }
                else if (responseData.Header.DataType != SendDataType.System)
                {
                    _Logger.Info($"ShareClientData Type is {responseData.Header.DataType}.");
                    return(null);
                }

                var connectionResponse = ConnectionResponse.FromByte(responseData.DataPart);

                if (connectionResponse == null)
                {
                    _Logger.Info($"Response DataPart is Nothing.");
                    return(null);
                }

                _ConnectResponse.Invoke(connectionResponse);
                if (!connectionResponse.IsConnect)
                {
                    _Logger.Info($"Reject Connect. -> {connectEndPoint}");
                    return(null);
                }

                _Logger.Info($"Succes Connect. -> {connectEndPoint}");

                return(new Connection(connectionResponse.ConnectionData.CleintSpec, socket.LocalEndPoint, connectEndPoint));
            }