예제 #1
0
        internal void StartOperationConnect()
        {
            // Remember the operation type.
            _completedOperation = SocketAsyncOperation.Connect;
            _multipleConnect    = null;
            _connectSocket      = null;

            InnerStartOperationConnect();
        }
예제 #2
0
        public static bool ConnectAsync(SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e)
        {
            bool retval;

            // Throw if multiple buffers specified.
            if (e.m_BufferList != null)
            {
                throw new ArgumentException(SR.GetString(SR.net_multibuffernotsupported), "BufferList");
            }

            // Throw if RemoteEndPoint is null.
            if (e.RemoteEndPoint == null)
            {
                throw new ArgumentNullException("remoteEP");
            }

            EndPoint    endPointSnapshot = e.RemoteEndPoint;
            DnsEndPoint dnsEP            = endPointSnapshot as DnsEndPoint;

            if (dnsEP != null)
            {
                Socket attemptSocket = null;
                MultipleConnectAsync multipleConnectAsync = null;
                if (dnsEP.AddressFamily == AddressFamily.Unspecified)
                {
                    multipleConnectAsync = new MultipleSocketMultipleConnectAsync(socketType, protocolType);
                }
                else
                {
                    attemptSocket        = new Socket(dnsEP.AddressFamily, socketType, protocolType);
                    multipleConnectAsync = new SingleSocketMultipleConnectAsync(attemptSocket, false);
                }

                e.StartOperationCommon(attemptSocket);
                e.StartOperationWrapperConnect(multipleConnectAsync);

                retval = multipleConnectAsync.StartConnectAsync(e, dnsEP);
            }
            else
            {
                Socket attemptSocket = new Socket(endPointSnapshot.AddressFamily, socketType, protocolType);
                retval = attemptSocket.ConnectAsync(e);
            }

            return(retval);
        }
예제 #3
0
        internal void StartOperationWrapperConnect(MultipleConnectAsync args)
        {
            SetLastOperation(SocketAsyncOperation.Connect);

            //m_MultipleConnect = args;
        }
예제 #4
0
 internal void StartOperationWrapperConnect(MultipleConnectAsync args)
 {
     _completedOperation = SocketAsyncOperation.Connect;
     _multipleConnect    = args;
     _connectSocket      = null;
 }
예제 #5
0
파일: Socket.cs 프로젝트: REALTOBIZ/mono
 internal void StartOperationWrapperConnect(MultipleConnectAsync args) {
     m_CompletedOperation = SocketAsyncOperation.Connect;
     m_MultipleConnect = args;
     m_ConnectSocket = null;
 }
예제 #6
0
파일: Socket.cs 프로젝트: REALTOBIZ/mono
        internal void StartOperationConnect() {
            // Remember the operation type.
            m_CompletedOperation = SocketAsyncOperation.Connect;
            m_MultipleConnect = null;
            m_ConnectSocket = null;
            
            // ConnectEx uses a sockaddr buffer containing he remote address to which to connect.
            // It can also optionally take a single buffer of data to send after the connection is complete.
            //
            // The sockaddr is pinned with a GCHandle to avoid having to use the object array form of UnsafePack.
            // The optional buffer is pinned using the Overlapped.UnsafePack method that takes a single object to pin.

            PinSocketAddressBuffer();
            CheckPinNoBuffer();
        }
 internal void StartOperationConnect()
 {
     this.m_CompletedOperation = SocketAsyncOperation.Connect;
     this.m_MultipleConnect = null;
     this.m_ConnectSocket = null;
     this.PinSocketAddressBuffer();
     this.CheckPinNoBuffer();
 }
예제 #8
0
        internal void StartOperationConnect()
        {
            // Remember the operation type.
            _completedOperation = SocketAsyncOperation.Connect;
            _multipleConnect = null;
            _connectSocket = null;

            InnerStartOperationConnect();
        }
		internal void StartOperationWrapperConnect (MultipleConnectAsync args)
		{
			SetLastOperation (SocketAsyncOperation.Connect);

			//m_MultipleConnect = args;
		}