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