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); }
public static bool ConnectAsync(SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e) { bool retval; if (s_LoggingEnabled) Logging.Enter(Logging.Sockets, null, "ConnectAsync", ""); // 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); } if (s_LoggingEnabled) Logging.Exit(Logging.Sockets, null, "ConnectAsync", retval); return retval; }
public static bool ConnectAsync(System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType, SocketAsyncEventArgs e) { bool flag; if (s_LoggingEnabled) { Logging.Enter(Logging.Sockets, (string) null, "ConnectAsync", ""); } if (e.m_BufferList != null) { throw new ArgumentException(SR.GetString("net_multibuffernotsupported"), "BufferList"); } if (e.RemoteEndPoint == null) { throw new ArgumentNullException("remoteEP"); } EndPoint remoteEndPoint = e.RemoteEndPoint; DnsEndPoint endPoint = remoteEndPoint as DnsEndPoint; if (endPoint != null) { Socket socket = null; MultipleConnectAsync args = null; if (endPoint.AddressFamily == System.Net.Sockets.AddressFamily.Unspecified) { args = new MultipleSocketMultipleConnectAsync(socketType, protocolType); } else { socket = new Socket(endPoint.AddressFamily, socketType, protocolType); args = new SingleSocketMultipleConnectAsync(socket, false); } e.StartOperationCommon(socket); e.StartOperationWrapperConnect(args); flag = args.StartConnectAsync(e, endPoint); } else { flag = new Socket(remoteEndPoint.AddressFamily, socketType, protocolType).ConnectAsync(e); } if (s_LoggingEnabled) { Logging.Exit(Logging.Sockets, (string) null, "ConnectAsync", flag); } return flag; }