Socket.Connect Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
Výjimky
remoteEP
je null
.
Při pokusu o přístup k soketu došlo k chybě.
Byl Socket zavřený.
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é
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- LocalEndPoint
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- Blocking
- Poll(Int32, SelectMode)
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ě.
Byl Socket zavřený.
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ě.
Byl Socket zavřený.
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ě.
Byla Socket uzavřena.
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.