TcpClient クラス

TCP ネットワーク サービスのためのクライアント接続を提供します。

この型のすべてのメンバの一覧については、TcpClient メンバ を参照してください。

System.Object
   System.Net.Sockets.TcpClient

Public Class TcpClient
   Implements IDisposable
[C#]
public class TcpClient : IDisposable
[C++]
public __gc class TcpClient : public IDisposable
[JScript]
public class TcpClient implements IDisposable

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

TcpClient クラスは、同期ブロッキング モードのときにネットワーク上で接続したり、ストリーム データを送受信したりするための単純なメソッドを提供します。

TcpClient が接続およびデータ交換を行うには、TCP ProtocolType を使用して作成された TcpListener または Socket が受信接続要求を待機している必要があります。このリスナに接続するには、次の 2 つの方法のいずれかを使用します。

  • TcpClient を作成し、使用できる 3 つの Connect メソッドの 1 つを呼び出します。
  • リモート ホストのホスト名とポート番号を使用して、 TcpClient を作成します。このコンストラクタは自動的に接続を試みます。

メモ   同期ブロッキング モードでコネクションレスのデータグラムを送信する場合は、 UdpClient クラスを使用します。

継承時の注意: データを送受信するには、 GetStream メソッドを使用して NetworkStream を取得します。リモート ホストとデータの送受信を行うには、 NetworkStreamWrite および Read メソッドを呼び出します。 TcpClient に関連付けられているリソースをすべて解放するには、 Close メソッドを使用します。

使用例

[Visual Basic, C#, C++] TcpClient 接続を確立する例を次に示します。

 
Shared Sub Connect(server As [String], message As [String])
   Try
      ' Create a TcpClient.
      ' Note, for this client to work you need to have a TcpServer 
      ' connected to the same address as specified by the server, port
      ' combination.
      Dim port As Int32 = 13000
      Dim client As New TcpClient(server, port)
      
      ' Translate the passed message into ASCII and store it as a Byte array.
      Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(message)
      
      ' Get a client stream for reading and writing.
      '  Stream stream = client.GetStream();
      Dim stream As NetworkStream = client.GetStream()
      
      ' Send the message to the connected TcpServer. 
      stream.Write(data, 0, data.Length)
      
      Console.WriteLine("Sent: {0}", message)
      
      ' Receive the TcpServer.response.
      ' Buffer to store the response bytes.
      data = New [Byte](256) {}
      
      ' String to store the response ASCII representation.
      Dim responseData As [String] = [String].Empty
      
      ' Read the first batch of the TcpServer response bytes.
      Dim bytes As Int32 = stream.Read(data, 0, data.Length)
      responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
      Console.WriteLine("Received: {0}", responseData)
      
      ' Close everything.
      client.Close()
   Catch e As ArgumentNullException
      Console.WriteLine("ArgumentNullException: {0}", e)
   Catch e As SocketException
      Console.WriteLine("SocketException: {0}", e)
   End Try
   
   Console.WriteLine(ControlChars.Cr + " Press Enter to continue...")
   Console.Read()
End Sub 'Connect

[C#] 
static void Connect(String server, String message) 
{
  try 
  {
    // Create a TcpClient.
    // Note, for this client to work you need to have a TcpServer 
    // connected to the same address as specified by the server, port
    // combination.
    Int32 port = 13000;
    TcpClient client = new TcpClient(server, port);
    
    // Translate the passed message into ASCII and store it as a Byte array.
    Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);         

    // Get a client stream for reading and writing.
   //  Stream stream = client.GetStream();
    
    NetworkStream stream = client.GetStream();

    // Send the message to the connected TcpServer. 
    stream.Write(data, 0, data.Length);

    Console.WriteLine("Sent: {0}", message);         

    // Receive the TcpServer.response.
    
    // Buffer to store the response bytes.
    data = new Byte[256];

    // String to store the response ASCII representation.
    String responseData = String.Empty;

    // Read the first batch of the TcpServer response bytes.
    Int32 bytes = stream.Read(data, 0, data.Length);
    responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
    Console.WriteLine("Received: {0}", responseData);         

    // Close everything.
    client.Close();         
  } 
  catch (ArgumentNullException e) 
  {
    Console.WriteLine("ArgumentNullException: {0}", e);
  } 
  catch (SocketException e) 
  {
    Console.WriteLine("SocketException: {0}", e);
  }
    
  Console.WriteLine("\n Press Enter to continue...");
  Console.Read();
}

[C++] 
void Connect(String* server, String* message) {
    try {
        // Create a TcpClient.
        // Note, for this client to work you need to have a TcpServer 
        // connected to the same address as specified by the server, port
        // combination.
        Int32 port = 13000;
        TcpClient* client = new TcpClient(server, port);

        // Translate the passed message into ASCII and store it as a Byte array.
        Byte data[] = Text::Encoding::ASCII->GetBytes(message);         

        // Get a client stream for reading and writing.
        //  Stream stream = client->GetStream();

        NetworkStream* stream = client->GetStream();

        // Send the message to the connected TcpServer. 
        stream->Write(data, 0, data->Length);

        Console::WriteLine(S"Sent: {0}", message);         

        // Receive the TcpServer::response.

        // Buffer to store the response bytes. data = new Byte[256];

        // String to store the response ASCII representation.
        String* responseData = String::Empty;

        // Read the first batch of the TcpServer response bytes.
        Int32 bytes = stream->Read(data, 0, data->Length);
        responseData = Text::Encoding::ASCII->GetString(data, 0, bytes);
        Console::WriteLine(S"Received: {0}", responseData);         

        // Close everything.
        client->Close();         
    } catch (ArgumentNullException* e) {
        Console::WriteLine(S"ArgumentNullException: {0}", e);
    } catch (SocketException* e) {
        Console::WriteLine(S"SocketException: {0}", e);
    }

    Console::WriteLine(S"\n Press Enter to continue...");
    Console::Read();
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Net.Sockets

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System (System.dll 内)

.NET Framework セキュリティ:

  • SocketPermission (送信接続を確立するか、受信要求を受け入れるためのアクセス許可)

参照

TcpClient メンバ | System.Net.Sockets 名前空間 | TcpListener | NetworkStream | TCP/UDP | Socket | ProtocolType | IPEndPoint | Connect | Write | Read