Socket.Connect メソッド

定義

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

オーバーロード

Connect(EndPoint)

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

Connect(IPAddress, Int32)

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

Connect(IPAddress[], Int32)

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

Connect(String, Int32)

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

Connect(EndPoint)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

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

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 ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

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

注意

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

注意

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

Note

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

こちらもご覧ください

適用対象

Connect(IPAddress, Int32)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

リモート ホストへの接続を確立します。 ホストは、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 ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

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

注意

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

注意

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

Note

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

適用対象

Connect(IPAddress[], Int32)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

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

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

注意

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

注意

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

Note

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

適用対象

Connect(String, Int32)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

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

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

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

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

注意

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

注意

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

Note

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

適用対象