Socket.Connect Metoda

Definice

Naváže připojení ke vzdálenému hostiteli.

Přetížení

Connect(EndPoint)

Naváže připojení ke vzdálenému hostiteli.

Connect(IPAddress, Int32)

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

Connect(IPAddress[], Int32)

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

Connect(String, Int32)

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

Connect(EndPoint)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Naváže 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

Představuje EndPoint vzdálené zařízení.

Výjimky

remoteEP je null.

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

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

Služba Socket byla umístěna 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í.

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 vytvoří výchozího vzdáleného hostitele. Po volání Connectmůžete odesílat data do vzdáleného zařízení metodou Send 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 před odesíláním a přijímáním dat volat Connect . Můžete použít SendTo a ReceiveFrom k synchronní komunikaci se vzdáleným hostitelem. Pokud zavoláte Connect, všechny datagramy, které přicházejí z jiné než zadané výchozí adresy, budou zahozeny. Pokud chcete nastavit výchozího 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 se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Metoda Connect se zablokuje, pokud před voláním BlockingConnectnenastavíte vlastnost na false hodnotu . Pokud používáte protokol orientovaný na připojení, jako je TCP, a zakážete blokování, vyvolá SocketException chybu, Connect protože na vytvoření připojení potřebuje čas. Protokoly bez připojení nevyvolají výjimku, protože jednoduše vytvoří 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, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 . Pokud se chyba vrátila WSAEWOULDBLOCK, připojení ke vzdálenému hostiteli bylo inicializováno připojením orientovaným Socketna připojení , ale ještě se úspěšně nedokončilo. 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 Connectjste nevolali Bind , poskytovatel základní služby přiřadí adresu místní sítě a číslo portu. Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřadí místní síťovou adresu a číslo portu, dokud nedokončíte operaci odeslání nebo přijetí. 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. Jedná se o omezení základní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)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Naváže 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ě.

Tato metoda je platná pro sokety v rodině InterNetwork nebo InterNetworkV6 .

Délka je address nula.

Služba Socket byla umístěna 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 vytvoří 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 před odesíláním a přijímáním dat volat Connect . Můžete použít SendTo a ReceiveFrom k synchronní komunikaci se vzdáleným hostitelem. Pokud zavoláte Connect všechny datagramy, které přicházejí z jiné než zadané výchozí adresy, budou zahozeny. Pokud chcete nastavit výchozího 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 se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Connect metoda bude blokovat, pokud jste vlastnost výslovně nenastavili Blocking na 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á SocketException chybu, Connect protože na vytvoření připojení potřebuje čas. Protokoly bez připojení nevyvolají výjimku, protože jednoduše vytvoří 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, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 . Pokud se chyba vrátila WSAEWOULDBLOCK, připojení ke vzdálenému hostiteli bylo inicializováno připojením orientovaným Socketna připojení , ale ještě se úspěšně nedokončilo. 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 Connectjste nevolali Bind , poskytovatel základní služby přiřadí adresu místní sítě a číslo portu. Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřadí místní síťovou adresu a číslo portu, dokud nedokončíte operaci odeslání nebo přijetí. 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. Jedná se o omezení základní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)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Naváže 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ě.

Soket není v rodině InterNetwork nebo InterNetworkV6 .

Délka je address nula.

Služba Socket byla umístěna 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á ihned po volání GetHostAddressesmetody , která může vrátit více IP adres pro jednoho hostitele. 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 nástroj vytvoří 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í, například UDP, nemusíte před odesláním a příjmem dat volat Connect . Pomocí a SendToReceiveFrom můžete synchronně komunikovat se vzdáleným hostitelem. Pokud zavoláte Connect všechny datagramy, které přicházejí z jiné než zadané výchozí adresy, budou zahozeny. Pokud chcete nastavit výchozího 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á výjimku SocketException. Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API rozhraní Windows Sockets verze 2 .

Connect metoda bude blokovat, pokud jste konkrétně nenastavili Blocking vlastnost na před false voláním Connect. Pokud používáte protokol orientovaný na připojení, jako je TCP, a zakážete blokování, Connect vyvolá výjimku , SocketException protože připojení potřebuje čas. Protokoly bez připojení nevyvolají výjimku, protože jednoduše vytvoří 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, projděte si podrobný popis chyby v dokumentaci k rozhraní API rozhraní Windows Sockets verze 2 . Pokud se chyba vrátila WSAEWOULDBLOCK, připojení ke vzdálenému hostiteli bylo inicializováno připojením orientovaným Socketna připojení , ale dosud nebylo úspěšně dokončeno. Poll Pomocí 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 před voláním Connect, základní poskytovatel služeb přiřadí místní síťovou adresu a číslo portu. Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřadí místní síťovou adresu a číslo portu, dokud nedokončíte operaci odeslání nebo přijetí. 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, nemůžete tuto metodu použít k obnovení připojení. K opětovnému připojení použijte jednu z asynchronních BeginConnect metod. Jedná se o omezení základní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(String, Int32)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Naváže 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ě.

Zásuvka není v rodině InterNetwork nebo InterNetworkV6 .

Voláním Socket se umístil do naslouchacího stavu 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í, například TCP, Connect metoda synchronně vytvoří síťové připojení mezi LocalEndPoint a zadaným vzdáleným hostitelem. Pokud používáte protokol bez připojení, Connect nástroj vytvoří 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í, například UDP, nemusíte před odesláním a příjmem dat volat Connect . Pomocí a SendToReceiveFrom můžete synchronně komunikovat se vzdáleným hostitelem. Pokud zavoláte Connect všechny datagramy, které přicházejí z jiné než zadané výchozí adresy, budou zahozeny. Pokud chcete nastavit výchozího 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á výjimku SocketException. Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API rozhraní Windows Sockets verze 2 .

Metoda Connect se zablokuje, pokud jste před voláním BlockingConnectnenastavili vlastnost na false . Pokud používáte protokol orientovaný na připojení, jako je TCP, a zakážete blokování, Connect vyvolá chybu , SocketException protože připojení potřebuje čas. Protokoly bez připojení nevyvolají výjimku, protože jednoduše vytvoří 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, projděte si podrobný popis chyby v dokumentaci k rozhraní API rozhraní Windows Sockets verze 2 . Pokud se chyba vrátila WSAEWOULDBLOCK, připojení ke vzdálenému hostiteli bylo inicializováno připojením orientovaným Socketna připojení , ale dosud nebylo úspěšně dokončeno. Poll Pomocí 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, pokusí se o připojení k adrese IPv6 nejprve před adresou IPv4. Pokud hostitel nenaslouchá na adrese IPv6, může to zpozdit dobu navázání připojení.

Poznámka

Pokud používáte protokol orientovaný na připojení a před voláním Connectjste ho nezavolaliBind, přiřadí vám příslušný poskytovatel služeb místní síťovou adresu a číslo portu. Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřadí místní síťovou adresu a číslo portu, dokud nedokončíte operaci odeslání nebo přijetí. 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, nemůžete tuto metodu použít k obnovení připojení. K opětovnému připojení použijte jednu z asynchronních BeginConnect metod. Jedná se o omezení základní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