private static MyNetworkStream CreateSocketStream(MySqlConnectionStringBuilder settings, IPAddress ip, bool unix)
        {
            EndPoint remoteEP;

            if (!Platform.IsWindows() & unix)
            {
                remoteEP = MyNetworkStream.CreateUnixEndPoint(settings.Server);
            }
            else
            {
                remoteEP = new IPEndPoint(ip, (int)settings.Port);
            }
            Socket socket = unix ? new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP) : new Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            if (settings.Keepalive > 0u)
            {
                MyNetworkStream.SetKeepAlive(socket, settings.Keepalive);
            }
            IAsyncResult asyncResult = socket.BeginConnect(remoteEP, null, null);

            if (!asyncResult.AsyncWaitHandle.WaitOne((int)(settings.ConnectionTimeout * 1000u), false))
            {
                socket.Close();
                return(null);
            }
            try
            {
                socket.EndConnect(asyncResult);
            }
            catch (Exception)
            {
                socket.Close();
                throw;
            }
            MyNetworkStream myNetworkStream = new MyNetworkStream(socket, true);

            GC.SuppressFinalize(socket);
            GC.SuppressFinalize(myNetworkStream);
            return(myNetworkStream);
        }