Socket.Connect Metoda

Definice

Vytvoří připojení ke vzdálenému hostiteli.

Přetížení

Connect(EndPoint)

Vytvoří připojení ke vzdálenému hostiteli.

Connect(IPAddress, Int32)

Vytvoří připojení ke vzdálenému hostiteli. Hostitel je určený IP adresou a číslem portu.

Connect(IPAddress[], Int32)

Vytvoří připojení ke vzdálenému hostiteli. Hostitel je určen polem IP adres a číslem portu.

Connect(String, Int32)

Vytvoří připojení ke vzdálenému hostiteli. Hostitel je určený názvem hostitele a číslem portu.

Connect(EndPoint)

Vytvoří připojení ke vzdálenému hostiteli.

public:
 void Connect(System::Net::EndPoint ^ remoteEP);
public void Connect (System.Net.EndPoint remoteEP);
member this.Connect : System.Net.EndPoint -> unit
Public Sub Connect (remoteEP As EndPoint)

Parametry

remoteEP
EndPoint

Jedná se EndPoint o vzdálené zařízení.

Výjimky

remoteEP je null.

Při pokusu o přístup k soketu došlo k chybě.

Volající vyšší v zásobníku volání nemá oprávnění k požadované operaci.

Byl Socket umístěn ve stavu naslouchání voláním Listen(Int32).

Příklady

Následující příklad kódu se připojí ke vzdálenému koncovému bodu a pak ověří připojení.

client->Connect( anEndPoint );
if (  !client->Connected )
{
   Console::WriteLine( "Winsock error: {0}", Convert::ToString(
      System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) );
}
   
// This is how you can determine whether a socket is still connected.
bool blockingState = client->Blocking;
try
{
   array<Byte>^tmp = gcnew array<Byte>(1);
   client->Blocking = false;
   client->Send( tmp, 0, static_cast<SocketFlags>(0) );
   Console::WriteLine( L"Connected!" );
}
catch ( SocketException^ e ) 
{
   // 10035 == WSAEWOULDBLOCK
   if ( e->NativeErrorCode.Equals( 10035 ) )
   {
      Console::WriteLine( "Connected from an exception!" );
   }
   else
   {
      Console::WriteLine( "Disconnected: {0}!", e->NativeErrorCode );
   }
}
finally
{
   client->Blocking = blockingState;
}

Console::WriteLine( "Connected: {0}", client->Connected );
// .Connect throws an exception if unsuccessful
client.Connect(anEndPoint);

// This is how you can determine whether a socket is still connected.
bool blockingState = client.Blocking;
try
{
    byte [] tmp = new byte[1];

    client.Blocking = false;
    client.Send(tmp, 0, 0);
    Console.WriteLine("Connected!");
}
catch (SocketException e)
{
    // 10035 == WSAEWOULDBLOCK
    if (e.NativeErrorCode.Equals(10035))
    {
        Console.WriteLine("Still Connected, but the Send would block");
    }
    else
    {
        Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
    }
}
finally
{
    client.Blocking = blockingState;
}

Console.WriteLine("Connected: {0}", client.Connected);
    ' .Connect throws an exception if unsuccessful
    client.Connect(anEndPoint)
    
    ' This is how you can determine whether a socket is still connected.
    Dim blockingState As Boolean = client.Blocking
    Try
        Dim tmp(0) As Byte
        
        client.Blocking = False
        client.Send(tmp, 0, 0)
        Console.WriteLine("Connected!")
    Catch e As SocketException
        ' 10035 == WSAEWOULDBLOCK
        If e.NativeErrorCode.Equals(10035) Then
            Console.WriteLine("Still Connected, but the Send would block")
        Else
            Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode)
        End If
    Finally
        client.Blocking = blockingState
    End Try
    
    Console.WriteLine("Connected: {0}", client.Connected)

End Sub

Poznámky

Pokud používáte protokol orientovaný na připojení, například TCP, Connect metoda synchronně vytvoří síťové připojení mezi LocalEndPoint a zadaným vzdáleným koncovým bodem. Pokud používáte protokol bez připojení, Connect naváže výchozího vzdáleného hostitele. Po volání Connectmůžete odesílat data do vzdáleného zařízení pomocí Send metody nebo přijímat data ze vzdáleného zařízení pomocí Receive metody.

Pokud používáte protokol bez připojení, jako je UDP, nemusíte volat Connect před odesláním a příjmem dat. Můžete použít SendTo a ReceiveFrom synchronně komunikovat se vzdáleným hostitelem. Pokud zavoláte Connect, všechny datovégramy, které přicházejí z jiné adresy než zadané výchozí, se zahodí. Pokud chcete nastavit výchozího vzdáleného hostitele na adresu vysílání, musíte nejprve zavolat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast, nebo Connect vyvolá SocketException. Pokud se zobrazí zpráva SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby.

Metoda Connect se zablokuje, pokud výslovně nenastavíte Blocking vlastnost před false voláním Connect. Pokud používáte protokol orientovaný na připojení, jako je TCP, a zakážete blokování, vyvolá chybuSocketException, Connect protože potřebuje čas k vytvoření připojení. Protokoly bez připojení nevyvolají výjimku, protože jednoduše navazují výchozího vzdáleného hostitele. Můžete použít SocketException.ErrorCode k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby. Pokud chyba vrátila WSAEWOULDBLOCK, vzdálené připojení hostitele bylo zahájeno připojením orientovaným Socketna připojení , ale ještě nebylo úspěšně dokončeno. Poll Pomocí metody určete, kdy Socket je připojení dokončeno.

Poznámka

Pokud používáte protokol orientovaný na připojení a před voláním ConnectnevolaliBind, přiřadí poskytovatel služby příslušnému poskytovateli služeb adresu místní sítě a číslo portu. Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřazuje adresu místní sítě a číslo portu, dokud nedokončíte operaci odesílání nebo příjmu. Pokud chcete změnit výchozího vzdáleného hostitele, zavolejte Connect znovu s požadovaným koncovým bodem.

Poznámka

Pokud byl soket dříve odpojený, nelze tuto metodu použít k obnovení připojení. K opětovnému připojení použijte jednu z asynchronních BeginConnect metod. Toto je omezení podkladového poskytovatele.

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

Connect(IPAddress, Int32)

Vytvoří připojení ke vzdálenému hostiteli. Hostitel je určený IP adresou a číslem portu.

public:
 void Connect(System::Net::IPAddress ^ address, int port);
public void Connect (System.Net.IPAddress address, int port);
member this.Connect : System.Net.IPAddress * int -> unit
Public Sub Connect (address As IPAddress, port As Integer)

Parametry

address
IPAddress

IP adresa vzdáleného hostitele.

port
Int32

Číslo portu vzdáleného hostitele.

Výjimky

address je null.

Číslo portu není platné.

Při pokusu o přístup k soketu došlo k chybě.

Ta Socket byla uzavřena.

Tato metoda je platná pro sokety v InterNetwork řadách nebo InterNetworkV6 rodin.

Délka address je nula.

Byl Socket umístěn do naslouchacího stavu voláním Listen(Int32).

Příklady

Následující příklad kódu se připojí ke vzdálenému koncovému bodu a pak ověří připojení.

// Synchronous connect using IPAddress to resolve the 
// host name.
static void Connect1( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( IPs[ 0 ], port );
   Console::WriteLine( "Connection established" );
}
// Synchronous connect using IPAddress to resolve the
// host name.
public static void Connect1(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(IPs[0], port);
    Console.WriteLine("Connection established");
}

Poznámky

Pokud používáte protokol orientovaný na připojení, například TCP, Connect metoda synchronně vytvoří síťové připojení mezi LocalEndPoint a zadaným vzdáleným koncovým bodem. Pokud používáte protokol bez připojení, Connect naváže výchozího vzdáleného hostitele. Po volání Connect můžete odesílat data do vzdáleného zařízení pomocí Send metody nebo přijímat data ze vzdáleného zařízení pomocí Receive metody.

Pokud používáte protokol bez připojení, jako je UDP, nemusíte volat Connect před odesláním a příjmem dat. Můžete použít SendTo a ReceiveFrom synchronně komunikovat se vzdáleným hostitelem. Pokud zavoláte Connect jakékoli datovégramy, které přicházejí z jiné adresy, než je zadaná výchozí hodnota, budou zahozeny. Pokud chcete nastavit výchozího vzdáleného hostitele na adresu vysílání, musíte nejprve zavolat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast, nebo Connect vyvolá SocketException. Pokud se zobrazí zpráva SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby.

Connect metoda se zablokuje, pokud vlastnost výslovně nenastavíte Blocking před false voláním Connect. Pokud používáte protokol orientovaný na připojení, jako je TCP, a zakážete blokování, vyvolá chybuSocketException, Connect protože potřebuje čas k vytvoření připojení. Protokoly bez připojení nevyvolají výjimku, protože jednoduše navazují výchozího vzdáleného hostitele. Můžete použít SocketException.ErrorCode k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby. Pokud chyba vrátila WSAEWOULDBLOCK, vzdálené připojení hostitele bylo zahájeno připojením orientovaným Socketna připojení , ale ještě nebylo úspěšně dokončeno. Poll Pomocí metody určete, kdy Socket je připojení dokončeno.

Poznámka

Pokud používáte protokol orientovaný na připojení a před voláním ConnectnevolaliBind, přiřadí poskytovatel služby příslušnému poskytovateli služeb adresu místní sítě a číslo portu. Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřazuje adresu místní sítě a číslo portu, dokud nedokončíte operaci odesílání nebo příjmu. Pokud chcete změnit výchozího vzdáleného hostitele, zavolejte Connect znovu s požadovaným koncovým bodem.

Poznámka

Pokud byl soket dříve odpojený, nelze tuto metodu použít k obnovení připojení. K opětovnému připojení použijte jednu z asynchronních BeginConnect metod. Toto je omezení podkladového poskytovatele.

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Platí pro

Connect(IPAddress[], Int32)

Vytvoří připojení ke vzdálenému hostiteli. Hostitel je určen polem IP adres a číslem portu.

public:
 void Connect(cli::array <System::Net::IPAddress ^> ^ addresses, int port);
public void Connect (System.Net.IPAddress[] addresses, int port);
member this.Connect : System.Net.IPAddress[] * int -> unit
Public Sub Connect (addresses As IPAddress(), port As Integer)

Parametry

addresses
IPAddress[]

IP adresy vzdáleného hostitele.

port
Int32

Číslo portu vzdáleného hostitele.

Výjimky

addresses je null.

Číslo portu není platné.

Při pokusu o přístup k soketu došlo k chybě.

Ta Socket byla uzavřena.

Soket není v rodině InterNetwork ani InterNetworkV6 v rodině.

Délka address je nula.

Byl Socket umístěn do naslouchacího stavu voláním Listen(Int32).

Příklady

Následující příklad kódu se připojí ke vzdálenému koncovému bodu a pak ověří připojení.

// Synchronous connect using Dns.ResolveToAddresses to 
// resolve the host name.
static void Connect2( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( IPs, port );
   Console::WriteLine( "Connection established" );
}
// Synchronous connect using Dns.GetHostAddresses to
// resolve the host name.
public static void Connect2(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);
    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(IPs, port);
    Console.WriteLine("Connection established");
}

Poznámky

Tato metoda se obvykle používá okamžitě po volání GetHostAddresses, což může vrátit více IP adres pro jednoho hostitele. Pokud používáte protokol orientovaný na připojení, jako je TCP, Connect metoda synchronně naváže síťové připojení mezi LocalEndPoint a zadaným vzdáleným koncovým bodem. Pokud používáte protokol bez připojení, Connect naváže se výchozí vzdálený hostitel. Po volání Connect můžete odesílat data do vzdáleného Send zařízení pomocí metody nebo přijímat data ze vzdáleného zařízení metodou Receive .

Pokud používáte protokol bez připojení, jako je UDP, nemusíte volat Connect před odesíláním a přijímáním dat. Můžete použít SendTo a ReceiveFrom synchronně komunikovat se vzdáleným hostitelem. Pokud zavoláte Connect jakékoli datovégramy, které přicházejí z jiné adresy než zadané výchozí hodnoty, budou zahozeny. Pokud chcete nastavit výchozí vzdáleného hostitele na adresu všesměrového vysílání, musíte nejprve zavolat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast, nebo Connect vyvolá SocketException. Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.

Connect metoda bude blokovat, pokud výslovně nenastavíte Blocking vlastnost false před voláním Connect. Pokud používáte protokol orientovaný na připojení, jako je TCP, a zakážete blokování, Connect vyvolá SocketException se, protože potřebuje čas na vytvoření připojení. Protokoly bez připojení nevyvolají výjimku, protože jednoduše naváže výchozího vzdáleného hostitele. Můžete použít SocketException.ErrorCode k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby. Pokud chyba vrátila WSAEWOULDBLOCK, připojení vzdáleného hostitele bylo inicializováno připojením orientované Socketna připojení , ale ještě nebylo úspěšně dokončeno. Poll Pomocí této metody určete, kdy Socket se připojení dokončilo.

Poznámka

Pokud používáte protokol orientovaný na připojení a nezavolali Bind jste ho před voláním Connect, přiřadí poskytovatel základní služby adresu místní sítě a číslo portu. Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřazuje adresu místní sítě a číslo portu, dokud nedokončíte operaci odeslání nebo příjmu. Pokud chcete změnit výchozího vzdáleného hostitele, zavolejte Connect znovu s požadovaným koncovým bodem.

Poznámka

Pokud byl soket dříve odpojen, nelze použít tuto metodu k obnovení připojení. K opětovnému připojení použijte jednu z asynchronních BeginConnect metod. Jedná se o omezení příslušného poskytovatele.

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.

Platí pro

Connect(String, Int32)

Vytvoří připojení ke vzdálenému hostiteli. Hostitel je určený názvem hostitele a číslem portu.

public:
 void Connect(System::String ^ host, int port);
public void Connect (string host, int port);
member this.Connect : string * int -> unit
Public Sub Connect (host As String, port As Integer)

Parametry

host
String

Název vzdáleného hostitele.

port
Int32

Číslo portu vzdáleného hostitele.

Výjimky

host je null.

Číslo portu není platné.

Při pokusu o přístup k soketu došlo k chybě.

Ta Socket byla uzavřena.

Soket není v rodině InterNetwork ani InterNetworkV6 v rodině.

Byl Socket umístěn do naslouchacího stavu voláním Listen(Int32).

Příklady

Následující příklad kódu se připojí ke vzdálenému koncovému bodu a pak ověří připojení.

// Synchronous connect using host name (resolved by the 
// Connect call.)
static void Connect3( String^ host, int port )
{
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( host, port );
   Console::WriteLine( "Connection established" );
}
// Synchronous connect using host name (resolved by the
// Connect call.)
public static void Connect3(string host, int port)
{
    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(host, port);
    Console.WriteLine("Connection established");
}

Poznámky

Pokud používáte protokol orientovaný na připojení, jako je TCP, Connect metoda synchronně naváže síťové připojení mezi LocalEndPoint a zadaným vzdáleným hostitelem. Pokud používáte protokol bez připojení, Connect naváže se výchozí vzdálený hostitel. Po volání Connect můžete odesílat data do vzdáleného Send zařízení pomocí metody nebo přijímat data ze vzdáleného zařízení metodou Receive .

Pokud používáte protokol bez připojení, jako je UDP, nemusíte volat Connect před odesíláním a přijímáním dat. Můžete použít SendTo a ReceiveFrom synchronně komunikovat se vzdáleným hostitelem. Pokud zavoláte Connect jakékoli datovégramy, které přicházejí z jiné adresy než zadané výchozí hodnoty, budou zahozeny. Pokud chcete nastavit výchozí vzdáleného hostitele na adresu všesměrového vysílání, musíte nejprve zavolat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast, nebo Connect vyvolá SocketException. Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.

Metoda Connect bude blokovat, pokud výslovně nenastavíte Blocking vlastnost false před voláním Connect. Pokud používáte protokol orientovaný na připojení, jako je TCP, a zakažte blokování, vyvolá SocketException to proto, Connect že potřebuje čas na vytvoření připojení. Protokoly bez připojení nevyvolají výjimku, protože jednoduše naváže výchozího vzdáleného hostitele. Můžete použít SocketException.ErrorCode k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby. Pokud chyba vrátila WSAEWOULDBLOCK, připojení vzdáleného hostitele bylo inicializováno připojením orientované Socketna připojení , ale ještě nebylo úspěšně dokončeno. Poll Pomocí této metody určete, kdy Socket se připojení dokončilo.

Pokud je povolený protokol IPv6 a Connect(String, Int32) volá se metoda pro připojení k hostiteli, který se překládá na adresy IPv6 i IPv4, připojení k adrese IPv6 se nejprve pokusí před adresou IPv4. To může mít vliv na zpoždění času na navázání připojení, pokud hostitel naslouchá na adrese IPv6.

Poznámka

Pokud používáte protokol orientovaný na připojení a před voláním ho nezavolal Bind Connect, přiřadí poskytovatel základní služby adresu místní sítě a číslo portu. Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřazuje adresu místní sítě a číslo portu, dokud nedokončíte operaci odeslání nebo příjmu. Pokud chcete změnit výchozího vzdáleného hostitele, zavolejte Connect znovu s požadovaným koncovým bodem.

Poznámka

Pokud byl soket dříve odpojen, nelze použít tuto metodu k obnovení připojení. K opětovnému připojení použijte jednu z asynchronních BeginConnect metod. Jedná se o omezení příslušného poskytovatele.

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.

Platí pro