示例#1
0
 private static void ConnectAsyncInternal(
     EndPoint remoteEndPoint,
     ConnectedCallback callback,
     object state)
 {
     if (remoteEndPoint is DnsEndPoint)
     {
         DnsEndPoint  dnsEndPoint   = (DnsEndPoint)remoteEndPoint;
         IAsyncResult hostAddresses = Dns.BeginGetHostAddresses(dnsEndPoint.Host,
                                                                new AsyncCallback(ConnectAsyncExtension.OnGetHostAddresses),
                                                                (object)new ConnectAsyncExtension.DnsConnectState()
         {
             Port     = dnsEndPoint.Port,
             Callback = callback,
             State    = state
         });
         if (!hostAddresses.CompletedSynchronously)
         {
             return;
         }
         ConnectAsyncExtension.OnGetHostAddresses(hostAddresses);
     }
     else
     {
         SocketAsyncEventArgs socketAsyncEventArgs =
             ConnectAsyncExtension.CreateSocketAsyncEventArgs(remoteEndPoint, callback, state);
         new global::System.Net.Sockets.Socket(remoteEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
         .ConnectAsync(socketAsyncEventArgs);
     }
 }