//        public static List<AvailablePort> DevicesLists = new List<AvailablePort>();
        // Maybe list of All sockets'll be here, but I think it's not good option.

        #endregion

        #region Methods

        #region Send
        public static CommunicationResult Send(byte[] dataPackages)
        {
            CommunicationResult retval = CommunicationResult.Success;

            try
            {
                IAsyncResult result  = ControllerSocket.BeginConnect(ControllerEndPoint, null, null);
                bool         success = result.AsyncWaitHandle.WaitOne(commTimeOut, true);
            }
            catch
            {
                ControllerSocket.Close();
                ControllerSocket = null;
                retval           = CommunicationResult.ConnectionOpenFailed;
            }

            if (ControllerSocket.Connected)
            {
                List <byte> requestBuffer = new List <byte>();
                int         packageCount  = 0;

                // add network communication ID code
                requestBuffer.AddRange(IDcode.GetAddressBytes());

                // add 4 bytes with command bytes count
                packageCount = dataPackages.Length;
                requestBuffer.AddRange(BitConverter.GetBytes(packageCount));

                // add command bytes
                requestBuffer.AddRange(dataPackages);

                // write create file data
                ControllerSocket.Send(requestBuffer.ToArray());
            }
            else
            {
                ControllerSocket.Close();
                ControllerSocket = null;
                retval           = CommunicationResult.ConnectionOpenFailed;
            }

            return(retval);
        }
        public static CommunicationResult Receive(out byte[] responsePackage, out int responseLength)
        {
            CommunicationResult retval = CommunicationResult.Success;

            responsePackage = new byte[1024];
            responseLength  = 0;

            responseLength = ControllerSocket.Receive(responsePackage);

            responsePackage = PreapereReadPackage(responsePackage, responseLength).ToArray();
            responseLength  = responsePackage.Length;


            ControllerSocket.Close();
            ControllerSocket = null;

            if (ControllerSocket.Connected)
            {
                retval = CommunicationResult.ConnectionCloseFailed;
            }


            return(retval);
        }