Socket.Connect メソッド

定義

リモート ホストへの接続を確立します。Establishes a connection to a remote host.

オーバーロード

Connect(String, Int32)

リモート ホストへの接続を確立します。Establishes a connection to a remote host. ホストはホスト名とポート番号で指定されます。The host is specified by a host name and a port number.

Connect(IPAddress[], Int32)

リモート ホストへの接続を確立します。Establishes a connection to a remote host. ホストは、IP アドレスの配列とポート番号で指定されます。The host is specified by an array of IP addresses and a port number.

Connect(IPAddress, Int32)

リモート ホストへの接続を確立します。Establishes a connection to a remote host. ホストは、IP アドレスとポート番号で指定されます。The host is specified by an IP address and a port number.

Connect(EndPoint)

リモート ホストへの接続を確立します。Establishes a connection to a remote host.

Connect(String, Int32)

リモート ホストへの接続を確立します。Establishes a connection to a remote host. ホストはホスト名とポート番号で指定されます。The host is specified by a host name and a port number.

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)

パラメーター

host
String

リモート ホストの名前。The name of the remote host.

port
Int32

リモート ホストのポート番号。The port number of the remote host.

例外

hostnull です。host is null.

ポート番号が無効です。The port number is not valid.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

Socket が閉じられました。The Socket has been closed.

このメソッドは、InterNetwork または InterNetworkV6 ファミリのソケットで有効です。This method is valid for sockets in the InterNetwork or InterNetworkV6 families.

SocketListen(Int32) を呼び出すことでリッスン状態になっています。The Socket has been placed in a listening state by calling Listen(Int32).

次のコード例では、リモートエンドポイントに接続し、接続を確認します。The following code example connects to a remote endpoint and then verifies the connection.

// 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");
}		

注釈

TCP などの接続指向プロトコルを使用している場合、Connect 方法では、LocalEndPoint と指定したリモートホストの間のネットワーク接続を同期的に確立します。If you are using a connection-oriented protocol such as TCP, the Connect method synchronously establishes a network connection between LocalEndPoint and the specified remote host. コネクションレスプロトコルを使用している場合、Connect によって既定のリモートホストが確立されます。If you are using a connectionless protocol, Connect establishes a default remote host. を呼び出した後、Send メソッドを使用してリモートデバイスにデータを送信したり、Receive メソッドを使用してリモートデバイスからデータを受信したりすることができ Connect ます。After you call Connect you can send data to the remote device with the Send method, or receive data from the remote device with the Receive method.

UDP などのコネクションレスプロトコルを使用している場合は、データを送受信する前に Connect を呼び出す必要はありません。If you are using a connectionless protocol such as UDP, you do not have to call Connect before sending and receiving data. SendToReceiveFrom を使用して、リモートホストと同期的に通信できます。You can use SendTo and ReceiveFrom to synchronously communicate with a remote host. を呼び出すと Connect 指定した既定値以外のアドレスから到達したデータグラムは破棄されます。If you do call Connect any datagrams that arrive from an address other than the specified default will be discarded. 既定のリモートホストをブロードキャストアドレスに設定する場合は、最初に SetSocketOption メソッドを呼び出し、socket オプションを SocketOptionName.Broadcastに設定する必要があります。指定しないと、ConnectSocketExceptionをスローします。If you want to set your default remote host to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast, or Connect will throw a SocketException. SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Connectを呼び出す前に Blocking プロパティを false に明示的に設定しない限り、Connect メソッドはブロックします。Connect method will block, unless you specifically set the Blocking property to false prior to calling Connect. TCP のような接続指向プロトコルを使用していて、ブロックを無効にすると、Connect は接続に時間がかかるため、SocketException をスローします。If you are using a connection-oriented protocol like TCP and you do disable blocking, Connect will throw a SocketException because it needs time to make the connection. コネクションレスプロトコルは、既定のリモートホストを確立するだけなので、例外をスローしません。Connectionless protocols will not throw an exception because they simply establish a default remote host. SocketException.ErrorCode を使用すると、特定のエラーコードを取得できます。You can use SocketException.ErrorCode to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error. エラーによって WSAEWOULDBLOCK が返された場合、リモートホスト接続は接続指向 Socketによって開始されていますが、まだ正常に完了していません。If the error returned WSAEWOULDBLOCK, the remote host connection has been initiated by a connection-oriented Socket, but has not yet completed successfully. Poll メソッドを使用して、Socket の接続がいつ終了するかを判断します。Use the Poll method to determine when the Socket is finished connecting.

Ipv6 が有効になっていて、Connect(String, Int32) メソッドを呼び出して、IPv6 と IPv4 の両方のアドレスに解決されるホストに接続する場合、IPv4 アドレスの前に IPv6 アドレスへの接続が最初に試行されます。If IPv6 is enabled and the Connect(String, Int32) method is called to connect to a host that resolves to both IPv6 and IPv4 addresses, the connection to the IPv6 address will be attempted first before the IPv4 address. ホストが IPv6 アドレスでリッスンしていない場合、接続の確立に時間がかかることがあります。This may have the effect of delaying the time to establish the connection if the host is not listening on the IPv6 address.

注意

接続指向プロトコルを使用していて、Connectを呼び出す前に Bind を呼び出さなかった場合は、基になるサービスプロバイダーによってローカルネットワークアドレスとポート番号が割り当てられます。If you are using a connection-oriented protocol and did not call Bind before calling Connect, the underlying service provider will assign the local network address and port number. コネクションレスプロトコルを使用している場合、送信または受信操作が完了するまで、サービスプロバイダーはローカルネットワークアドレスとポート番号を割り当てません。If you are using a connectionless protocol, the service provider will not assign a local network address and port number until you complete a send or receive operation. 既定のリモートホストを変更する場合は、目的のエンドポイントで Connect をもう一度呼び出します。If you want to change the default remote host, call Connect again with the desired endpoint.

注意

ソケットが既に切断されている場合は、この方法を使用して接続を復元することはできません。If the socket has been previously disconnected, then you cannot use this method to restore the connection. 非同期の BeginConnect メソッドのいずれかを使用して再接続します。Use one of the asynchronous BeginConnect methods to reconnect. これは、基になるプロバイダーの制限です。This is a limitation of the underlying provider.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

Connect(IPAddress[], Int32)

リモート ホストへの接続を確立します。Establishes a connection to a remote host. ホストは、IP アドレスの配列とポート番号で指定されます。The host is specified by an array of IP addresses and a port number.

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)

パラメーター

addresses
IPAddress[]

リモート ホストの IP アドレス。The IP addresses of the remote host.

port
Int32

リモート ホストのポート番号。The port number of the remote host.

例外

addressesnullです。addresses is null.

ポート番号が無効です。The port number is not valid.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

Socket が閉じられました。The Socket has been closed.

このメソッドは、InterNetwork または InterNetworkV6 ファミリのソケットで有効です。This method is valid for sockets in the InterNetwork or InterNetworkV6 families.

address の長さが 0 です。The length of address is zero.

SocketListen(Int32) を呼び出すことでリッスン状態になっています。The Socket has been placed in a listening state by calling Listen(Int32).

次のコード例では、リモートエンドポイントに接続し、接続を確認します。The following code example connects to a remote endpoint and then verifies the connection.

// 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");
}		

注釈

このメソッドは、通常、1つのホストに対して複数の IP アドレスを返すことができる GetHostAddressesの呼び出しの直後に使用されます。This method is typically used immediately after a call to GetHostAddresses, which can return multiple IP addresses for a single host. TCP などの接続指向プロトコルを使用している場合、Connect メソッドは、LocalEndPoint と指定されたリモートエンドポイント間のネットワーク接続を同期的に確立します。If you are using a connection-oriented protocol such as TCP, the Connect method synchronously establishes a network connection between LocalEndPoint and the specified remote endpoint. コネクションレスプロトコルを使用している場合、Connect によって既定のリモートホストが確立されます。If you are using a connectionless protocol, Connect establishes a default remote host. を呼び出した後、Send メソッドを使用してリモートデバイスにデータを送信したり、Receive メソッドを使用してリモートデバイスからデータを受信したりすることができ Connect ます。After you call Connect you can send data to the remote device with the Send method, or receive data from the remote device with the Receive method.

UDP などのコネクションレスプロトコルを使用している場合は、データを送受信する前に Connect を呼び出す必要はありません。If you are using a connectionless protocol such as UDP, you do not have to call Connect before sending and receiving data. SendToReceiveFrom を使用して、リモートホストと同期的に通信できます。You can use SendTo and ReceiveFrom to synchronously communicate with a remote host. を呼び出すと Connect 指定した既定値以外のアドレスから到達したデータグラムは破棄されます。If you do call Connect any datagrams that arrive from an address other than the specified default will be discarded. 既定のリモートホストをブロードキャストアドレスに設定する場合は、最初に SetSocketOption メソッドを呼び出し、socket オプションを SocketOptionName.Broadcastに設定する必要があります。指定しないと、ConnectSocketExceptionをスローします。If you want to set your default remote host to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast, or Connect will throw a SocketException. SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Connectを呼び出す前に Blocking プロパティを false に明示的に設定しない限り、Connect メソッドはブロックします。Connect method will block, unless you specifically set the Blocking property to false prior to calling Connect. TCP のような接続指向プロトコルを使用していて、ブロックを無効にすると、Connect は接続に時間がかかるため、SocketException をスローします。If you are using a connection-oriented protocol like TCP and you do disable blocking, Connect will throw a SocketException because it needs time to make the connection. コネクションレスプロトコルは、既定のリモートホストを確立するだけなので、例外をスローしません。Connectionless protocols will not throw an exception because they simply establish a default remote host. SocketException.ErrorCode を使用すると、特定のエラーコードを取得できます。You can use SocketException.ErrorCode to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error. エラーによって WSAEWOULDBLOCK が返された場合、リモートホスト接続は接続指向 Socketによって開始されていますが、まだ正常に完了していません。If the error returned WSAEWOULDBLOCK, the remote host connection has been initiated by a connection-oriented Socket, but has not yet completed successfully. Poll メソッドを使用して、Socket の接続がいつ終了するかを判断します。Use the Poll method to determine when the Socket is finished connecting.

注意

接続指向プロトコルを使用していて、Connectを呼び出す前に Bind を呼び出さなかった場合は、基になるサービスプロバイダーによってローカルネットワークアドレスとポート番号が割り当てられます。If you are using a connection-oriented protocol and did not call Bind before calling Connect, the underlying service provider will assign the local network address and port number. コネクションレスプロトコルを使用している場合、送信または受信操作が完了するまで、サービスプロバイダーはローカルネットワークアドレスとポート番号を割り当てません。If you are using a connectionless protocol, the service provider will not assign a local network address and port number until you complete a send or receive operation. 既定のリモートホストを変更する場合は、目的のエンドポイントで Connect をもう一度呼び出します。If you want to change the default remote host, call Connect again with the desired endpoint.

注意

ソケットが既に切断されている場合は、この方法を使用して接続を復元することはできません。If the socket has been previously disconnected, then you cannot use this method to restore the connection. 非同期の BeginConnect メソッドのいずれかを使用して再接続します。Use one of the asynchronous BeginConnect methods to reconnect. これは、基になるプロバイダーの制限です。This is a limitation of the underlying provider.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

Connect(IPAddress, Int32)

リモート ホストへの接続を確立します。Establishes a connection to a remote host. ホストは、IP アドレスとポート番号で指定されます。The host is specified by an IP address and a port number.

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)

パラメーター

address
IPAddress

リモート ホストの IP アドレス。The IP address of the remote host.

port
Int32

リモート ホストのポート番号。The port number of the remote host.

例外

addressnull です。address is null.

ポート番号が無効です。The port number is not valid.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

Socket が閉じられました。The Socket has been closed.

このメソッドは、InterNetwork または InterNetworkV6 ファミリのソケットで有効です。This method is valid for sockets in the InterNetwork or InterNetworkV6 families.

address の長さが 0 です。The length of address is zero.

SocketListen(Int32) を呼び出すことでリッスン状態になっています。The Socket has been placed in a listening state by calling Listen(Int32).

次のコード例では、リモートエンドポイントに接続し、接続を確認します。The following code example connects to a remote endpoint and then verifies the connection.

// 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");
       }		

注釈

TCP などの接続指向プロトコルを使用している場合、Connect メソッドは、LocalEndPoint と指定されたリモートエンドポイント間のネットワーク接続を同期的に確立します。If you are using a connection-oriented protocol such as TCP, the Connect method synchronously establishes a network connection between LocalEndPoint and the specified remote endpoint. コネクションレスプロトコルを使用している場合、Connect によって既定のリモートホストが確立されます。If you are using a connectionless protocol, Connect establishes a default remote host. を呼び出した後、Send メソッドを使用してリモートデバイスにデータを送信したり、Receive メソッドを使用してリモートデバイスからデータを受信したりすることができ Connect ます。After you call Connect you can send data to the remote device with the Send method, or receive data from the remote device with the Receive method.

UDP などのコネクションレスプロトコルを使用している場合は、データを送受信する前に Connect を呼び出す必要はありません。If you are using a connectionless protocol such as UDP, you do not have to call Connect before sending and receiving data. SendToReceiveFrom を使用して、リモートホストと同期的に通信できます。You can use SendTo and ReceiveFrom to synchronously communicate with a remote host. を呼び出すと Connect 指定した既定値以外のアドレスから到達したデータグラムは破棄されます。If you do call Connect any datagrams that arrive from an address other than the specified default will be discarded. 既定のリモートホストをブロードキャストアドレスに設定する場合は、最初に SetSocketOption メソッドを呼び出し、socket オプションを SocketOptionName.Broadcastに設定する必要があります。指定しないと、ConnectSocketExceptionをスローします。If you want to set your default remote host to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast, or Connect will throw a SocketException. SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Connectを呼び出す前に Blocking プロパティを false に明示的に設定しない限り、Connect メソッドはブロックします。Connect method will block, unless you specifically set the Blocking property to false prior to calling Connect. TCP のような接続指向プロトコルを使用していて、ブロックを無効にすると、Connect は接続に時間がかかるため、SocketException をスローします。If you are using a connection-oriented protocol like TCP and you do disable blocking, Connect will throw a SocketException because it needs time to make the connection. コネクションレスプロトコルは、既定のリモートホストを確立するだけなので、例外をスローしません。Connectionless protocols will not throw an exception because they simply establish a default remote host. SocketException.ErrorCode を使用すると、特定のエラーコードを取得できます。You can use SocketException.ErrorCode to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error. エラーによって WSAEWOULDBLOCK が返された場合、リモートホスト接続は接続指向 Socketによって開始されていますが、まだ正常に完了していません。If the error returned WSAEWOULDBLOCK, the remote host connection has been initiated by a connection-oriented Socket, but has not yet completed successfully. Poll メソッドを使用して、Socket の接続がいつ終了するかを判断します。Use the Poll method to determine when the Socket is finished connecting.

注意

接続指向プロトコルを使用していて、Connectを呼び出す前に Bind を呼び出さなかった場合は、基になるサービスプロバイダーによってローカルネットワークアドレスとポート番号が割り当てられます。If you are using a connection-oriented protocol and did not call Bind before calling Connect, the underlying service provider will assign the local network address and port number. コネクションレスプロトコルを使用している場合、送信または受信操作が完了するまで、サービスプロバイダーはローカルネットワークアドレスとポート番号を割り当てません。If you are using a connectionless protocol, the service provider will not assign a local network address and port number until you complete a send or receive operation. 既定のリモートホストを変更する場合は、目的のエンドポイントで Connect をもう一度呼び出します。If you want to change the default remote host, call Connect again with the desired endpoint.

注意

ソケットが既に切断されている場合は、この方法を使用して接続を復元することはできません。If the socket has been previously disconnected, then you cannot use this method to restore the connection. 非同期の BeginConnect メソッドのいずれかを使用して再接続します。Use one of the asynchronous BeginConnect methods to reconnect. これは、基になるプロバイダーの制限です。This is a limitation of the underlying provider.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

Connect(EndPoint)

リモート ホストへの接続を確立します。Establishes a connection to a remote host.

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)

パラメーター

remoteEP
EndPoint

リモート デバイスを表す EndPointAn EndPoint that represents the remote device.

例外

remoteEPnull です。remoteEP is null.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

Socket が閉じられました。The Socket has been closed.

呼び出し履歴の上位にある呼び出し元には、要求された操作に対するアクセス許可がありません。A caller higher in the call stack does not have permission for the requested operation.

SocketListen(Int32) を呼び出すことでリッスン状態になっています。The Socket has been placed in a listening state by calling Listen(Int32).

次のコード例では、リモートエンドポイントに接続し、接続を確認します。The following code example connects to a remote endpoint and then verifies the connection.

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

注釈

TCP などの接続指向プロトコルを使用している場合、Connect メソッドは、LocalEndPoint と指定されたリモートエンドポイント間のネットワーク接続を同期的に確立します。If you are using a connection-oriented protocol such as TCP, the Connect method synchronously establishes a network connection between LocalEndPoint and the specified remote endpoint. コネクションレスプロトコルを使用している場合、Connect によって既定のリモートホストが確立されます。If you are using a connectionless protocol, Connect establishes a default remote host. Connectを呼び出した後、Send メソッドを使用してリモートデバイスにデータを送信したり、Receive メソッドを使用してリモートデバイスからデータを受信したりすることができます。After you call Connect, you can send data to the remote device with the Send method, or receive data from the remote device with the Receive method.

UDP などのコネクションレスプロトコルを使用している場合は、データを送受信する前に Connect を呼び出す必要はありません。If you are using a connectionless protocol such as UDP, you do not have to call Connect before sending and receiving data. SendToReceiveFrom を使用して、リモートホストと同期的に通信できます。You can use SendTo and ReceiveFrom to synchronously communicate with a remote host. Connectを呼び出すと、指定された既定以外のアドレスから到着したデータグラムはすべて破棄されます。If you do call Connect, any datagrams that arrive from an address other than the specified default will be discarded. 既定のリモートホストをブロードキャストアドレスに設定する場合は、最初に SetSocketOption メソッドを呼び出し、socket オプションを SocketOptionName.Broadcastに設定する必要があります。指定しないと、ConnectSocketExceptionをスローします。If you want to set your default remote host to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast, or Connect will throw a SocketException. SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Connectを呼び出す前に Blocking プロパティを false に明示的に設定しない限り、Connect メソッドはブロックされます。The Connect method will block, unless you specifically set the Blocking property to false prior to calling Connect. TCP のような接続指向プロトコルを使用していて、ブロックを無効にすると、Connect は接続に時間がかかるため、SocketException をスローします。If you are using a connection-oriented protocol like TCP and you do disable blocking, Connect will throw a SocketException because it needs time to make the connection. コネクションレスプロトコルは、既定のリモートホストを確立するだけなので、例外をスローしません。Connectionless protocols will not throw an exception because they simply establish a default remote host. SocketException.ErrorCode を使用すると、特定のエラーコードを取得できます。You can use SocketException.ErrorCode to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error. エラーによって WSAEWOULDBLOCK が返された場合、リモートホスト接続は接続指向 Socketによって開始されていますが、まだ正常に完了していません。If the error returned WSAEWOULDBLOCK, the remote host connection has been initiated by a connection-oriented Socket, but has not yet completed successfully. Poll メソッドを使用して、Socket の接続がいつ終了するかを判断します。Use the Poll method to determine when the Socket is finished connecting.

注意

接続指向プロトコルを使用していて、Connectを呼び出す前に Bind を呼び出さなかった場合は、基になるサービスプロバイダーによってローカルネットワークアドレスとポート番号が割り当てられます。If you are using a connection-oriented protocol and did not call Bind before calling Connect, the underlying service provider will assign the local network address and port number. コネクションレスプロトコルを使用している場合、送信または受信操作が完了するまで、サービスプロバイダーはローカルネットワークアドレスとポート番号を割り当てません。If you are using a connectionless protocol, the service provider will not assign a local network address and port number until you complete a send or receive operation. 既定のリモートホストを変更する場合は、目的のエンドポイントで Connect をもう一度呼び出します。If you want to change the default remote host, call Connect again with the desired endpoint.

注意

ソケットが既に切断されている場合は、この方法を使用して接続を復元することはできません。If the socket has been previously disconnected, then you cannot use this method to restore the connection. 非同期の BeginConnect メソッドのいずれかを使用して再接続します。Use one of the asynchronous BeginConnect methods to reconnect. これは、基になるプロバイダーの制限です。This is a limitation of the underlying provider.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

セキュリティ

SocketPermission
リモートホストに接続するために使用します。for connecting to the remote host. 関連付けられた列挙型: ConnectAssociated enumeration: Connect

こちらもご覧ください

適用対象