Internal_ConnectEndPoint() private method

private Internal_ConnectEndPoint ( int hostId, IntPtr sockAddrStorage, int sockAddrStorageLen, int exceptionConnectionId, byte &error ) : int
hostId int
sockAddrStorage System.IntPtr
sockAddrStorageLen int
exceptionConnectionId int
error byte
return int
コード例 #1
0
 public static int ConnectEndPoint(int hostId, EndPoint endPoint, int exceptionConnectionId, out byte error)
 {
     error = 0;
     byte[] array = new byte[]
     {
         95,
         36,
         19,
         246
     };
     if (endPoint == null)
     {
         throw new NullReferenceException("Null EndPoint provided");
     }
     if (endPoint.GetType().FullName != "UnityEngine.XboxOne.XboxOneEndPoint" && endPoint.GetType().FullName != "UnityEngine.PS4.SceEndPoint")
     {
         throw new ArgumentException("Endpoint of type XboxOneEndPoint or SceEndPoint  required");
     }
     if (endPoint.GetType().FullName == "UnityEngine.XboxOne.XboxOneEndPoint")
     {
         if (endPoint.AddressFamily != AddressFamily.InterNetworkV6)
         {
             throw new ArgumentException("XboxOneEndPoint has an invalid family");
         }
         SocketAddress socketAddress = endPoint.Serialize();
         if (socketAddress.Size != 14)
         {
             throw new ArgumentException("XboxOneEndPoint has an invalid size");
         }
         if (socketAddress[0] != 0 || socketAddress[1] != 0)
         {
             throw new ArgumentException("XboxOneEndPoint has an invalid family signature");
         }
         if (socketAddress[2] != array[0] || socketAddress[3] != array[1] || socketAddress[4] != array[2] || socketAddress[5] != array[3])
         {
             throw new ArgumentException("XboxOneEndPoint has an invalid signature");
         }
         byte[] array2 = new byte[8];
         for (int i = 0; i < array2.Length; i++)
         {
             array2[i] = socketAddress[6 + i];
         }
         IntPtr intPtr = new IntPtr(BitConverter.ToInt64(array2, 0));
         if (intPtr == IntPtr.Zero)
         {
             throw new ArgumentException("XboxOneEndPoint has an invalid SOCKET_STORAGE pointer");
         }
         byte[] array3 = new byte[2];
         Marshal.Copy(intPtr, array3, 0, array3.Length);
         AddressFamily addressFamily = (AddressFamily)(((int)array3[1] << 8) + (int)array3[0]);
         if (addressFamily != AddressFamily.InterNetworkV6)
         {
             throw new ArgumentException("XboxOneEndPoint has corrupt or invalid SOCKET_STORAGE pointer");
         }
         return(NetworkTransport.Internal_ConnectEndPoint(hostId, intPtr, 128, exceptionConnectionId, out error));
     }
     else
     {
         SocketAddress socketAddress2 = endPoint.Serialize();
         if (socketAddress2.Size != 16)
         {
             throw new ArgumentException("EndPoint has an invalid size");
         }
         if ((int)socketAddress2[0] != socketAddress2.Size)
         {
             throw new ArgumentException("EndPoint has an invalid size value");
         }
         if (socketAddress2[1] != 2)
         {
             throw new ArgumentException("EndPoint has an invalid family value");
         }
         byte[] array4 = new byte[16];
         for (int j = 0; j < array4.Length; j++)
         {
             array4[j] = socketAddress2[j];
         }
         IntPtr intPtr2 = Marshal.AllocHGlobal(array4.Length);
         Marshal.Copy(array4, 0, intPtr2, array4.Length);
         int result = NetworkTransport.Internal_ConnectEndPoint(hostId, intPtr2, 16, exceptionConnectionId, out error);
         Marshal.FreeHGlobal(intPtr2);
         return(result);
     }
 }
コード例 #2
0
        public static int ConnectEndPoint(int hostId, EndPoint endPoint, int exceptionConnectionId, out byte error)
        {
            error = (byte)0;
            byte[] numArray1 = new byte[4] {
                (byte)95, (byte)36, (byte)19, (byte)246
            };
            if (endPoint == null)
            {
                throw new NullReferenceException("Null EndPoint provided");
            }
            if (endPoint.GetType().FullName != "UnityEngine.XboxOne.XboxOneEndPoint" && endPoint.GetType().FullName != "UnityEngine.PS4.SceEndPoint")
            {
                throw new ArgumentException("Endpoint of type XboxOneEndPoint or SceEndPoint  required");
            }
            if (endPoint.GetType().FullName == "UnityEngine.XboxOne.XboxOneEndPoint")
            {
                EndPoint endPoint1 = endPoint;
                if (endPoint1.AddressFamily != AddressFamily.InterNetworkV6)
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid family");
                }
                SocketAddress socketAddress = endPoint1.Serialize();
                if (socketAddress.Size != 14)
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid size");
                }
                if ((int)socketAddress[0] != 0 || (int)socketAddress[1] != 0)
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid family signature");
                }
                if ((int)socketAddress[2] != (int)numArray1[0] || (int)socketAddress[3] != (int)numArray1[1] || ((int)socketAddress[4] != (int)numArray1[2] || (int)socketAddress[5] != (int)numArray1[3]))
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid signature");
                }
                byte[] numArray2 = new byte[8];
                for (int index = 0; index < numArray2.Length; ++index)
                {
                    numArray2[index] = socketAddress[6 + index];
                }
                IntPtr num = new IntPtr(BitConverter.ToInt64(numArray2, 0));
                if (num == IntPtr.Zero)
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid SOCKET_STORAGE pointer");
                }
                byte[] destination = new byte[2];
                Marshal.Copy(num, destination, 0, destination.Length);
                if (((int)destination[1] << 8) + (int)destination[0] != 23)
                {
                    throw new ArgumentException("XboxOneEndPoint has corrupt or invalid SOCKET_STORAGE pointer");
                }
                return(NetworkTransport.Internal_ConnectEndPoint(hostId, num, 128, exceptionConnectionId, out error));
            }
            SocketAddress socketAddress1 = endPoint.Serialize();

            if (socketAddress1.Size != 16)
            {
                throw new ArgumentException("EndPoint has an invalid size");
            }
            if ((int)socketAddress1[0] != socketAddress1.Size)
            {
                throw new ArgumentException("EndPoint has an invalid size value");
            }
            if ((int)socketAddress1[1] != 2)
            {
                throw new ArgumentException("EndPoint has an invalid family value");
            }
            byte[] source = new byte[16];
            for (int index = 0; index < source.Length; ++index)
            {
                source[index] = socketAddress1[index];
            }
            IntPtr num1 = Marshal.AllocHGlobal(source.Length);

            Marshal.Copy(source, 0, num1, source.Length);
            int num2 = NetworkTransport.Internal_ConnectEndPoint(hostId, num1, 16, exceptionConnectionId, out error);

            Marshal.FreeHGlobal(num1);
            return(num2);
        }
コード例 #3
0
        public static int ConnectEndPoint(int hostId, EndPoint endPoint, int exceptionConnectionId, out byte error)
        {
            error = 0;
            byte[] array = new byte[]
            {
                95,
                36,
                19,
                246
            };
            bool flag = endPoint == null;

            if (flag)
            {
                throw new NullReferenceException("Null EndPoint provided");
            }
            bool flag2 = endPoint.GetType().FullName != "UnityEngine.XboxOne.XboxOneEndPoint" && endPoint.GetType().FullName != "UnityEngine.PS4.SceEndPoint" && endPoint.GetType().FullName != "UnityEngine.PSVita.SceEndPoint";

            if (flag2)
            {
                throw new ArgumentException("Endpoint of type XboxOneEndPoint or SceEndPoint  required");
            }
            bool flag3 = endPoint.GetType().FullName == "UnityEngine.XboxOne.XboxOneEndPoint";
            int  result;

            if (flag3)
            {
                bool flag4 = endPoint.AddressFamily != AddressFamily.InterNetworkV6;
                if (flag4)
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid family");
                }
                SocketAddress socketAddress = endPoint.Serialize();
                bool          flag5         = socketAddress.Size != 14;
                if (flag5)
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid size");
                }
                bool flag6 = socketAddress[0] != 0 || socketAddress[1] > 0;
                if (flag6)
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid family signature");
                }
                bool flag7 = socketAddress[2] != array[0] || socketAddress[3] != array[1] || socketAddress[4] != array[2] || socketAddress[5] != array[3];
                if (flag7)
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid signature");
                }
                byte[] array2 = new byte[8];
                for (int i = 0; i < array2.Length; i++)
                {
                    array2[i] = socketAddress[6 + i];
                }
                IntPtr intPtr = new IntPtr(BitConverter.ToInt64(array2, 0));
                bool   flag8  = intPtr == IntPtr.Zero;
                if (flag8)
                {
                    throw new ArgumentException("XboxOneEndPoint has an invalid SOCKET_STORAGE pointer");
                }
                byte[] array3 = new byte[2];
                Marshal.Copy(intPtr, array3, 0, array3.Length);
                AddressFamily addressFamily = (AddressFamily)(((int)array3[1] << 8) + (int)array3[0]);
                bool          flag9         = addressFamily != AddressFamily.InterNetworkV6;
                if (flag9)
                {
                    throw new ArgumentException("XboxOneEndPoint has corrupt or invalid SOCKET_STORAGE pointer");
                }
                result = NetworkTransport.Internal_ConnectEndPoint(hostId, array2, 128, exceptionConnectionId, out error);
            }
            else
            {
                SocketAddress socketAddress2 = endPoint.Serialize();
                bool          flag10         = socketAddress2.Size != 16;
                if (flag10)
                {
                    throw new ArgumentException("EndPoint has an invalid size");
                }
                bool flag11 = (int)socketAddress2[0] != socketAddress2.Size;
                if (flag11)
                {
                    throw new ArgumentException("EndPoint has an invalid size value");
                }
                bool flag12 = socketAddress2[1] != 2;
                if (flag12)
                {
                    throw new ArgumentException("EndPoint has an invalid family value");
                }
                byte[] array4 = new byte[16];
                for (int j = 0; j < array4.Length; j++)
                {
                    array4[j] = socketAddress2[j];
                }
                int num = NetworkTransport.Internal_ConnectEndPoint(hostId, array4, 16, exceptionConnectionId, out error);
                result = num;
            }
            return(result);
        }