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 を取得します。リモート ホストとデータの送受信を行うには、 NetworkStream の Write および 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