Socket.Connect メソッド

定義

リモート ホストへの接続を確立します。

オーバーロード

Connect(EndPoint)

リモート ホストへの接続を確立します。

Connect(IPAddress, Int32)

リモート ホストへの接続を確立します。 ホストは、IP アドレスとポート番号で指定されます。

Connect(IPAddress[], Int32)

リモート ホストへの接続を確立します。 ホストは、IP アドレスの配列とポート番号で指定されます。

Connect(String, Int32)

リモート ホストへの接続を確立します。 ホストはホスト名とポート番号で指定されます。

Connect(EndPoint)

リモート ホストへの接続を確立します。

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

リモート デバイスを表す EndPoint

例外

remoteEPnullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

呼び出し履歴の上位にある呼び出し元には、要求された操作に対するアクセス許可がありません。

SocketListen(Int32) を呼び出すことでリッスン状態になっています。

次のコード例では、リモート エンドポイントに接続し、接続を確認します。

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 のネットワーク接続を同期的に確立します。 コネクションレス プロトコルを使用している場合は、 Connect 既定のリモート ホストを確立します。 呼び出 Connectした後、メソッドを使用してリモート デバイスにデータを Send 送信したり、メソッドを使用してリモート デバイスからデータを Receive 受信したりすることができます。

UDP などのコネクションレス プロトコルを使用している場合は、データを送受信する前に呼び出す Connect 必要はありません。 リモート ホストとReceiveFrom同期的に通信するために使用SendToできます。 呼び出し Connectを行うと、指定した既定値以外のアドレスから到着したデータグラムは破棄されます。 既定のリモート ホストをブロードキャスト アドレスに設定する場合は、最初にメソッドを SetSocketOption 呼び出してソケット オプションを設定する SocketOptionName.Broadcast必要があります。または ConnectSocketException. 受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

呼び出すConnect前にプロパティを明示的にfalse設定Blockingしない限り、メソッドはConnectブロックされます。 TCP のような接続指向のプロトコルを使用していて、ブロッキングを無効にした場合は、 Connect 接続に時間が必要になるため、A がスロー SocketException されます。 コネクションレス プロトコルは、単に既定のリモート ホストを確立するため、例外をスローしません。 特定のエラー コードを取得するために使用 SocketException.ErrorCode できます。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。 エラーが WSAEWOULDBLOCK を返した場合、リモート ホスト接続は接続指向 Socketによって開始されましたが、まだ正常に完了していません。 このメソッドを Poll 使用して、接続が完了したタイミングを Socket 確認します。

注意

接続指向プロトコルを使用していて、呼び出す前に呼び出BindConnectさなかった場合、基になるサービス プロバイダーはローカル ネットワーク アドレスとポート番号を割り当てます。 コネクションレス プロトコルを使用している場合、送信または受信操作を完了するまで、サービス プロバイダーはローカル ネットワーク アドレスとポート番号を割り当てません。 既定のリモート ホストを変更する場合は、目的のエンドポイントでもう一度呼び出 Connect します。

注意

ソケットが以前に切断されている場合、このメソッドを使用して接続を復元することはできません。 いずれかの非同期 BeginConnect メソッドを使用して再接続します。 これは、基になるプロバイダーの制限です。

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください

こちらもご覧ください

適用対象

Connect(IPAddress, Int32)

リモート ホストへの接続を確立します。 ホストは、IP アドレスとポート番号で指定されます。

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 アドレス。

port
Int32

リモート ホストのポート番号。

例外

addressnullです。

ポート番号が無効です。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

このメソッドは、InterNetwork または InterNetworkV6 ファミリのソケットで有効です。

address の長さが 0 です。

SocketListen(Int32) を呼び出すことでリッスン状態になっています。

次のコード例では、リモート エンドポイントに接続し、接続を確認します。

// 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 のネットワーク接続を同期的に確立します。 コネクションレス プロトコルを使用している場合は、 Connect 既定のリモート ホストを確立します。 呼び出 Connect した後、メソッドを使用してリモート デバイスにデータを Send 送信したり、メソッドを使用してリモート デバイスからデータを Receive 受信したりすることができます。

UDP などのコネクションレス プロトコルを使用している場合は、データを送受信する前に呼び出す Connect 必要はありません。 リモート ホストとReceiveFrom同期的に通信するために使用SendToできます。 指定した既定値以外のアドレスから受信したデータグラムを呼び出 Connect すと、破棄されます。 既定のリモート ホストをブロードキャスト アドレスに設定する場合は、最初にメソッドを SetSocketOption 呼び出してソケット オプションを設定する SocketOptionName.Broadcast必要があります。または ConnectSocketException. 受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

Connectメソッドは、呼び出すConnect前にプロパティをBlocking明示的にfalse設定しない限り、ブロックされます。 TCP のような接続指向のプロトコルを使用していて、ブロッキングを無効にした場合は、 Connect 接続に時間が必要になるため、A がスロー SocketException されます。 コネクションレス プロトコルは、単に既定のリモート ホストを確立するため、例外をスローしません。 特定のエラー コードを取得するために使用 SocketException.ErrorCode できます。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。 エラーが WSAEWOULDBLOCK を返した場合、リモート ホスト接続は接続指向 Socketによって開始されましたが、まだ正常に完了していません。 このメソッドを Poll 使用して、接続が完了したタイミングを Socket 確認します。

注意

接続指向プロトコルを使用していて、呼び出す前に呼び出BindConnectさなかった場合、基になるサービス プロバイダーはローカル ネットワーク アドレスとポート番号を割り当てます。 コネクションレス プロトコルを使用している場合、送信または受信操作を完了するまで、サービス プロバイダーはローカル ネットワーク アドレスとポート番号を割り当てません。 既定のリモート ホストを変更する場合は、目的のエンドポイントでもう一度呼び出 Connect します。

注意

ソケットが以前に切断されている場合、このメソッドを使用して接続を復元することはできません。 いずれかの非同期 BeginConnect メソッドを使用して再接続します。 これは、基になるプロバイダーの制限です。

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください

適用対象

Connect(IPAddress[], Int32)

リモート ホストへの接続を確立します。 ホストは、IP アドレスの配列とポート番号で指定されます。

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 アドレス。

port
Int32

リモート ホストのポート番号。

例外

addressesnullです。

ポート番号が無効です。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

ソケットがファミリ内InterNetworkV6にありませんInterNetwork

address の長さが 0 です。

SocketListen(Int32) を呼び出すことでリッスン状態になっています。

次のコード例では、リモート エンドポイントに接続し、接続を確認します。

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

注釈

通常、このメソッドは呼び出しの直後に GetHostAddresses使用されます。このメソッドは、1 つのホストに対して複数の IP アドレスを返すことができます。 TCP などの接続指向プロトコルを使用している場合、 Connect このメソッドは、指定されたリモート エンドポイントとの間 LocalEndPoint のネットワーク接続を同期的に確立します。 コネクションレス プロトコルを使用している場合は、 Connect 既定のリモート ホストを確立します。 呼び出 Connect した後、メソッドを使用してリモート デバイスにデータを Send 送信したり、メソッドを使用してリモート デバイスからデータを Receive 受信したりできます。

UDP などのコネクションレス プロトコルを使用している場合は、データの送受信前に呼び出す Connect 必要はありません。 リモート ホストを使用 SendTo して ReceiveFrom 、同期的に通信できます。 指定した既定値以外のアドレスから到着したデータグラムを呼び出 Connect すと、破棄されます。 既定のリモート ホストをブロードキャスト アドレスに設定する場合は、最初にメソッドを SetSocketOption 呼び出してソケット オプションを SocketOptionName.Broadcast設定するか、または Connect スロー SocketExceptionする必要があります。 受信した場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

Connectメソッドは、明示的に呼び出すConnect前にfalseプロパティをBlocking設定しない限り、ブロックされます。 TCP のような接続指向プロトコルを使用していて、ブロックを無効にした場合、接続を確立する時間が必要なため、 Connect a がスロー SocketException されます。 接続なしのプロトコルは、既定のリモート ホストを確立するだけなので、例外はスローされません。 特定のエラー コードを取得するために使用 SocketException.ErrorCode できます。 このコードを取得したら、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。 エラーが WSAEWOULDBLOCK を返した場合、リモート・ホスト接続は接続指向 Socketによって開始されましたが、まだ正常に完了していません。 このメソッドを Poll 使用して、接続が完了したタイミングを Socket 判断します。

注意

接続指向プロトコルを使用していて、呼び出すConnect前に呼び出Bindされなかった場合、基になるサービス プロバイダーはローカル ネットワーク アドレスとポート番号を割り当てます。 コネクションレス プロトコルを使用している場合、送信または受信操作を完了するまで、サービス プロバイダーはローカル ネットワーク アドレスとポート番号を割り当てません。 既定のリモート ホストを変更する場合は、目的のエンドポイントでもう一度呼び出 Connect します。

注意

ソケットが以前に切断されている場合は、このメソッドを使用して接続を復元することはできません。 いずれかの非同期 BeginConnect メソッドを使用して再接続します。 これは基になるプロバイダーの制限です。

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

適用対象

Connect(String, Int32)

リモート ホストへの接続を確立します。 ホストはホスト名とポート番号で指定されます。

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

リモート ホストの名前。

port
Int32

リモート ホストのポート番号。

例外

hostnullです。

ポート番号が無効です。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

ソケットがファミリ内InterNetworkV6にありませんInterNetwork

SocketListen(Int32) を呼び出すことでリッスン状態になっています。

次のコード例では、リモート エンドポイントに接続し、接続を確認します。

// 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 のネットワーク接続を同期的に確立します。 コネクションレス プロトコルを使用している場合は、 Connect 既定のリモート ホストを確立します。 呼び出 Connect した後、メソッドを使用してリモート デバイスにデータを Send 送信したり、メソッドを使用してリモート デバイスからデータを Receive 受信したりできます。

UDP などのコネクションレス プロトコルを使用している場合は、データの送受信前に呼び出す Connect 必要はありません。 リモート ホストを使用 SendTo して ReceiveFrom 、同期的に通信できます。 指定した既定値以外のアドレスから到着したデータグラムを呼び出 Connect すと、破棄されます。 既定のリモート ホストをブロードキャスト アドレスに設定する場合は、最初にメソッドを SetSocketOption 呼び出してソケット オプションを SocketOptionName.Broadcast設定するか、または Connect スロー SocketExceptionする必要があります。 受信した場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

メソッドはConnect、呼び出すConnect前にプロパティfalseを特にBlocking設定しない限り、ブロックされます。 TCP のような接続指向プロトコルを使用していて、ブロックを無効にした場合、接続を確立する時間が必要なため、 Connect スロー SocketException されます。 接続なしのプロトコルは、既定のリモート ホストを確立するだけなので、例外はスローされません。 特定のエラー コードを取得するために使用 SocketException.ErrorCode できます。 このコードを取得したら、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。 エラーが WSAEWOULDBLOCK を返した場合、リモート・ホスト接続は接続指向 Socketによって開始されましたが、まだ正常に完了していません。 このメソッドを Poll 使用して、接続が完了したタイミングを Socket 判断します。

IPv6 が有効になっていて、IPv6 アドレスと Connect(String, Int32) IPv4 アドレスの両方に解決されるホストに接続するためにメソッドが呼び出された場合、IPv4 アドレスの前に IPv6 アドレスへの接続が最初に試行されます。 これにより、ホストが IPv6 アドレスでリッスンしていない場合、接続を確立する時間が遅れる可能性があります。

注意

接続指向プロトコルを使用していて、呼び出すConnect前に呼び出Bindされなかった場合、基になるサービス プロバイダーはローカル ネットワーク アドレスとポート番号を割り当てます。 コネクションレス プロトコルを使用している場合、送信または受信操作を完了するまで、サービス プロバイダーはローカル ネットワーク アドレスとポート番号を割り当てません。 既定のリモート ホストを変更する場合は、目的のエンドポイントでもう一度呼び出 Connect します。

注意

ソケットが以前に切断されている場合は、このメソッドを使用して接続を復元することはできません。 いずれかの非同期 BeginConnect メソッドを使用して再接続します。 これは基になるプロバイダーの制限です。

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

適用対象