예제 #1
0
        public static int ReceiveFrom(Socket socket, byte[] buffer, int offset, int size, SocketFlags socketFlags, ref IPEndPointStruct ipEndPointStruct)
        {
            if (AddressFamily.InterNetworkV6 == socket.AddressFamily)
            {
                if (null == temporalMutableEPv6)
                {
                    temporalMutableEPv6 = new MutableIPEndPoint(socket.AddressFamily);
                }
                temporalMutableEPv6.Set(ref ipEndPointStruct);
                temporalMutableEPv6DownCasted = temporalMutableEPv6;

                int receivedBytes = socket.ReceiveFrom(buffer, offset, size, socketFlags, ref temporalMutableEPv6DownCasted);
                ipEndPointStruct = new IPEndPointStruct(temporalMutableEPv6);
                return(receivedBytes);
            }
            else
            {
                if (null == temporalMutableEPv4)
                {
                    temporalMutableEPv4 = new MutableIPEndPoint(socket.AddressFamily);
                }
                temporalMutableEPv4.Set(ref ipEndPointStruct);
                temporalMutableEPv4DownCasted = temporalMutableEPv4;

                int receivedBytes = socket.ReceiveFrom(buffer, offset, size, socketFlags, ref temporalMutableEPv4DownCasted);
                ipEndPointStruct = new IPEndPointStruct(temporalMutableEPv4);
                return(receivedBytes);
            }
        }
예제 #2
0
 public static int SendTo(Socket socket, byte[] buffer, int offset, int size, SocketFlags socketFlags, ref IPEndPointStruct ipEndPointStruct)
 {
     if (AddressFamily.InterNetworkV6 == socket.AddressFamily)
     {
         if (null == temporalMutableEPv6)
         {
             temporalMutableEPv6           = new MutableIPEndPoint(socket.AddressFamily);
             temporalMutableEPv6DownCasted = temporalMutableEPv6;
         }
         temporalMutableEPv6.Set(ref ipEndPointStruct);
         return(socket.SendTo(buffer, offset, size, socketFlags, temporalMutableEPv6));
     }
     else
     {
         if (null == temporalMutableEPv4)
         {
             temporalMutableEPv4           = new MutableIPEndPoint(socket.AddressFamily);
             temporalMutableEPv4DownCasted = temporalMutableEPv4;
         }
         temporalMutableEPv4.Set(ref ipEndPointStruct);
         return(socket.SendTo(buffer, offset, size, socketFlags, temporalMutableEPv4));
     }
 }
예제 #3
0
        public override bool Equals(object obj)
        {
            MutableIPEndPoint iPEndPoint = obj as MutableIPEndPoint;

            return(null != iPEndPoint && socketAddress.Equals(iPEndPoint.socketAddress));
        }
예제 #4
0
 internal bool Equals(MutableIPEndPoint other)
 {
     return(port == other.Port && ip.Equals(other.socketAddress));
 }
예제 #5
0
 internal IPEndPointStruct(MutableIPEndPoint ep) : this()
 {
     port = ep.Port;
     ip   = new IPHolder(ep.socketAddress);
 }