Socket.BeginConnectとは? わかりやすく解説

Socket.BeginConnect メソッド (String, Int32, AsyncCallback, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

リモート ホスト接続への非同期要求を開始します。ホストは、ホスト名とポート番号で指定されます。

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function BeginConnect ( _
    host As String, _
    port As Integer, _
    requestCallback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim host As String
Dim port As Integer
Dim requestCallback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginConnect(host, port, requestCallback, state)
public IAsyncResult BeginConnect (
    string host,
    int port,
    AsyncCallback requestCallback,
    Object state
)
public:
IAsyncResult^ BeginConnect (
    String^ host, 
    int port, 
    AsyncCallback^ requestCallback, 
    Object^ state
)
public IAsyncResult BeginConnect (
    String host, 
    int port, 
    AsyncCallback requestCallback, 
    Object state
)
public function BeginConnect (
    host : String, 
    port : int, 
    requestCallback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

host

リモート ホストの名前。

port

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

requestCallback

接続操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。

state

接続操作に関する情報を格納するユーザー定義のオブジェクト。このオブジェクトは、操作の完了時に requestCallback デリゲートに渡されます。

戻り値
非同期接続を参照する IAsyncResult。

例外例外
例外の種類条件

ArgumentNullException

host が null 参照 (Visual Basic では Nothing) です。

ObjectDisposedException

Socket は閉じられています。

NotSupportedException

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

ArgumentOutOfRangeException

ポート番号が無効です。

InvalidOperationException

Socket が Listen を実行中です。

解説解説

非同期の BeginConnect 操作は、EndConnect メソッドを呼び出して終了させる必要があります。通常、このメソッドは requestCallback デリゲートによって呼び出されます。

このメソッドは、操作が完了するまでブロックしません。操作が完了するまでブロックするには、Connect メソッド オーバーロードのいずれかを使用します。

非同期プログラミング モデルの使用法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

メモメモ

このソケットの接続が既に解除されていた場合は、操作の完了まで終了しないスレッドで BeginConnect を呼び出す必要があります。これは、基になるプロバイダの制限です。また、使用する EndPoint も異なる必要があります。

使用例使用例

非同期接続の試行を開始するコード例を次に示します。

public static ManualResetEvent allDone = 
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult
 ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect using host name (resolved by the 
// BeginConnect call.)
public static void BeginConnect3(string
 host, int port)
{
    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.BeginConnect(host, port, 
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  The callback 
    // sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");
}        
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.BeginConnect メソッド (IPAddress, Int32, AsyncCallback, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

リモート ホスト接続への非同期要求を開始します。ホストは、IPAddress とポート番号で指定されます。

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function BeginConnect ( _
    address As IPAddress, _
    port As Integer, _
    requestCallback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim address As IPAddress
Dim port As Integer
Dim requestCallback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginConnect(address, port, requestCallback, state)
public IAsyncResult BeginConnect (
    IPAddress address,
    int port,
    AsyncCallback requestCallback,
    Object state
)
public:
IAsyncResult^ BeginConnect (
    IPAddress^ address, 
    int port, 
    AsyncCallback^ requestCallback, 
    Object^ state
)
public IAsyncResult BeginConnect (
    IPAddress address, 
    int port, 
    AsyncCallback requestCallback, 
    Object state
)
public function BeginConnect (
    address : IPAddress, 
    port : int, 
    requestCallback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

address

リモート ホストの IPAddress。

port

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

requestCallback

接続操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。

state

接続操作に関する情報を格納するユーザー定義のオブジェクト。このオブジェクトは、操作の完了時に requestCallback デリゲートに渡されます。

戻り値
非同期接続を参照する IAsyncResult。

例外例外
例外の種類条件

ArgumentNullException

address が null 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

NotSupportedException

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

ArgumentOutOfRangeException

ポート番号が無効です。

ArgumentException

address の長さが 0 です。

InvalidOperationException

Socket が Listen を実行中です。

解説解説

非同期の BeginConnect 操作は、EndConnect メソッドを呼び出して終了させる必要があります。通常、このメソッドは requestCallback デリゲートによって呼び出されます。

このメソッドは、操作が完了するまでブロックしません。操作が完了するまでブロックするには、Connect のいずれかのメソッド オーバーロードか EndConnect を使用します。

非同期プログラミング モデルの使用法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

メモメモ

このソケットの接続が既に解除されていた場合は、操作の完了まで終了しないスレッドで BeginConnect を呼び出す必要があります。これは、基になるプロバイダの制限です。また、使用する EndPoint も異なる必要があります。

使用例使用例

非同期接続の試行を開始するコード例を次に示します。

public static ManualResetEvent allDone = 
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult
 ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect using the host name, resolved via 
// IPAddress
public static void BeginConnect1(string
 host, int port)
{

    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.BeginConnect(IPs[0], port, 
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  
    // The callback sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");

}        
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.BeginConnect メソッド (IPAddress[], Int32, AsyncCallback, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

リモート ホスト接続への非同期要求を開始します。ホストは、IPAddress 配列とポート番号で指定されます。

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function BeginConnect ( _
    addresses As IPAddress(), _
    port As Integer, _
    requestCallback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim addresses As IPAddress()
Dim port As Integer
Dim requestCallback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginConnect(addresses, port, requestCallback, state)
public IAsyncResult BeginConnect (
    IPAddress[] addresses,
    int port,
    AsyncCallback requestCallback,
    Object state
)
public:
IAsyncResult^ BeginConnect (
    array<IPAddress^>^ addresses, 
    int port, 
    AsyncCallback^ requestCallback, 
    Object^ state
)
public IAsyncResult BeginConnect (
    IPAddress[] addresses, 
    int port, 
    AsyncCallback requestCallback, 
    Object state
)
public function BeginConnect (
    addresses : IPAddress[], 
    port : int, 
    requestCallback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

addresses

リモート ホストを指定する 1 つ以上の IPAddress。

port

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

requestCallback

接続操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。

state

接続操作に関する情報を格納するユーザー定義のオブジェクト。このオブジェクトは、操作の完了時に requestCallback デリゲートに渡されます。

戻り値
非同期接続を参照する IAsyncResult。

例外例外
例外の種類条件

ArgumentNullException

addresses が null 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

NotSupportedException

このメソッドは、InterNetwork または InterNetworkV6 を使用するソケットで有効です。

ArgumentOutOfRangeException

ポート番号が無効です。

ArgumentException

address の長さが 0 です。

InvalidOperationException

Socket が Listen を実行中です。

解説解説

非同期の BeginConnect 操作は、EndConnect メソッドを呼び出して終了させる必要があります。通常、このメソッドは requestCallback デリゲートによって呼び出されます。

このメソッドは、操作が完了するまでブロックしません。操作が完了するまでブロックするには、Connect メソッド オーバーロードのいずれかを使用します。

非同期プログラミング モデルの使用法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

メモメモ

このソケットの接続が既に解除されていた場合は、操作の完了まで終了しないスレッドで BeginConnect を呼び出す必要があります。これは、基になるプロバイダの制限です。また、使用する EndPoint も異なる必要があります。

使用例使用例

非同期接続の試行を開始するコード例を次に示します。

public static ManualResetEvent allDone = 
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult
 ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect, using DNS.GetHostAddresses
public static void BeginConnect2(string
 host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.BeginConnect(IPs, port, 
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  The callback 
    // sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");
}        
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.BeginConnect メソッド


Socket.BeginConnect メソッド (EndPoint, AsyncCallback, Object)

リモート ホスト接続への非同期要求を開始します。

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function BeginConnect ( _
    remoteEP As EndPoint, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim remoteEP As EndPoint
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginConnect(remoteEP, callback, state)
public IAsyncResult BeginConnect (
    EndPoint remoteEP,
    AsyncCallback callback,
    Object state
)
public:
IAsyncResult^ BeginConnect (
    EndPoint^ remoteEP, 
    AsyncCallback^ callback, 
    Object^ state
)
public IAsyncResult BeginConnect (
    EndPoint remoteEP, 
    AsyncCallback callback, 
    Object state
)
public function BeginConnect (
    remoteEP : EndPoint, 
    callback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

remoteEP

リモート ホストを表す EndPoint。

callback

AsyncCallback デリゲート。

state

この要求のステータス情報を格納するオブジェクト。

戻り値
非同期接続を参照する IAsyncResult。

例外例外
例外の種類条件

ArgumentNullException

remoteEP が null 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

SecurityException

コール スタックの上位にある呼び出し元が、要求された操作のアクセス許可を保持していません。

InvalidOperationException

Socket が Listen を実行中です。

解説解説

コネクション指向のプロトコルを使用する場合、BeginConnect メソッドは、remoteEP パラメータへの接続に対する非同期要求を開始します。コネクションレスのプロトコルを使用している場合、BeginConnect は既定のリモート ホストを確立します。既定のリモート ホストに非同期的に接続したりこのホストを非同期的に設定したりすると、個別の実行スレッド内でデータを送受信できます。

AsyncCallback デリゲートを実装するコールバック メソッドを作成し、その名前を BeginConnect メソッドに渡すことができます。この場合、少なくとも state パラメータを使用して、Socket を BeginConnect に渡さなければなりません。またコールバックに他の情報が必要な場合は、小さなクラスを作成して Socket および必要な情報を保持させることができます。この場合、このクラスのインスタンスを、state パラメータを使用して BeginConnect メソッドに渡します。

コールバック メソッドは EndConnect メソッドを呼び出す必要があります。アプリケーションが BeginConnect を呼び出すと、指定したコールバック メソッドが個別のスレッドを使用して実行され、EndConnect は、Socket が正常に接続するか例外をスローするまでブロックします。BeginConnect メソッドを呼び出してから元のスレッドをブロックする場合は、WaitOne を使用します。元のスレッドの実行を継続させるには、コールバック メソッドの T:System.Threading.ManualResetEvent で Set メソッドを呼び出します。コールバック メソッドの記述に関する追加情報については、「Callback のサンプル」を参照してください。

UDP などのコネクションレスのプロトコルを使用している場合は、データを送受信する前に BeginConnect を呼び出す必要はありません。リモート ホストとの通信には、BeginSendTo および BeginReceiveFrom を使用できます。BeginConnect を呼び出した場合、指定した既定のアドレス以外から送信されたデータグラムはすべて破棄されます。既定のリモート ホストをブロード キャスト アドレスに設定するには、まず SetSocketOption を呼び出して Broadcast を true に設定する必要があります。このように設定できない場合、BeginConnect は SocketException をスローします。

コネクション指向のプロトコルを使用しており、BeginConnect の前に Bind を呼び出さない場合は、基になるサービス プロバイダが最も適切なローカル ネットワーク アドレスとポート番号を割り当てます。コネクションレスのプロトコルを使用している場合、BeginSend メソッドまたは ReceiveFrom メソッドを呼び出すまで、サービス プロバイダはローカル ネットワーク アドレスとポート番号を割り当てません。既定のリモート ホストを変更する必要がある場合は、必要なエンドポイントで BeginConnect メソッドを再度呼び出します。

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

メモメモ

このソケットの接続が既に解除されていた場合は、操作の完了まで終了しないスレッドで BeginConnect を呼び出す必要があります。これは、基になるプロバイダの制限です。

使用例使用例

非同期接続の試行を開始するコード例を次に示します。

   Dim lipa As IPHostEntry = Dns.Resolve("host.contoso.com")
   Dim lep As New IPEndPoint(lipa.AddressList(0),
 11000)
   
   Dim s As New Socket(lep.Address.AddressFamily,
 SocketType.Stream, ProtocolType.Tcp)
   Try
      
      While True
         allDone.Reset()
         
         Console.WriteLine("Establishing Connection")
  
         s.BeginConnect(lep, New AsyncCallback(AddressOf
 Async_Send_Receive.Connect_Callback), s)
         
         allDone.WaitOne()
      End While
   Catch e As Exception
      Console.WriteLine(e.ToString())
   End Try
End Sub 'Connect
IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000);

   Socket s = new Socket(lep.Address.AddressFamily,
                                  SocketType.Stream,
                                     ProtocolType.Tcp);
   try{
      
             while(true){
             allDone.Reset();

             Console.WriteLine("Establishing Connection");
             s.BeginConnect(lep, new AsyncCallback(Async_Send_Receive.Connect_Callback),
 s);

             allDone.WaitOne();
        }
   }
   catch (Exception e){
        Console.WriteLine(e.ToString());
   }
IPHostEntry^ lipa = Dns::Resolve( "host.contoso.com" );
IPEndPoint^ lep = gcnew IPEndPoint( lipa->AddressList[ 0 ], 11000 );

Socket^ s = gcnew Socket( lep->Address->AddressFamily,
   SocketType::Stream,
   ProtocolType::Tcp );
try
{
   while ( true )
   {
      allDone->Reset();

      Console::WriteLine( "Establishing Connection" );
      s->BeginConnect( lep, gcnew AsyncCallback(
         &Async_Send_Receive::Connect_Callback ), s );

      allDone->WaitOne();
   }
}
catch ( Exception^ e ) 
{
   Console::WriteLine( e );
}
IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.get_AddressList()[0], 11000);

Socket s = new Socket(lep.get_Address().get_AddressFamily(),
    SocketType.Stream, ProtocolType.Tcp);
try {
    while (true) {
        allDone.Reset();
        Console.WriteLine("Establishing Connection");
        s.BeginConnect(lep,
            new AsyncCallback(Async_Send_Receive.Connect_Callback),
 s);
        allDone.WaitOne();
    }
}
catch (System.Exception e) {
    Console.WriteLine(e.ToString());
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「Socket.BeginConnect」の関連用語

Socket.BeginConnectのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Socket.BeginConnectのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS