TcpListener クラス
TCP ネットワーク クライアントからの接続を待機します。
この型のすべてのメンバの一覧については、TcpListener メンバ を参照してください。
System.Object
System.Net.Sockets.TcpListener
Public Class TcpListener
[C#]
public class TcpListener
[C++]
public __gc class TcpListener
[JScript]
public class TcpListener
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
TcpListener クラスは、同期ブロッキング モードのときに受信接続要求を待機したり受け取ったりする単純なメソッドを提供します。 TcpListener に接続するには、 TcpClient または Socket のいずれかを使用できます。 IPEndPoint 、ローカル IP アドレスとポート番号、またはポート番号だけを使用して、 TcpListener を作成します。基になるサービス プロバイダがこれらの値を割り当てるようにするには、ローカル IP アドレスには Any を、ローカル ポート番号には 0 を指定します。このように指定した場合は、 LocalEndpoint を使用すると割り当てられた情報を確認できます。
Start メソッドを使用して、受信接続要求の待機を開始します。 Start は、 Stop メソッドが呼び出されるか、 MaxConnections がキューに置かれるまでは、受信接続要求をキューに置きます。 AcceptSocket または AcceptTcpClient のいずれかを使用して、受信接続要求のキューから接続を引き出します。この 2 つのメソッドはブロックします。ブロックしないようにする場合は、まず、 Pending メソッドを使用して、接続要求がキュー内で使用可能かどうかを確認します。
TcpListener を閉じるには、 Stop メソッドを使用します。
メモ Stop メソッドは、受け取ったどの接続も終了しません。これらの接続は 1 つずつ終了させる必要があります。
使用例
[Visual Basic, C#, C++] TcpListener を作成する例を次に示します。
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic
Class MyTcpListener
Public Shared Sub Main()
Try
' Set the TcpListener on port 13000.
Dim port As Int32 = 13000
Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")
Dim server As New TcpListener(localAddr, port)
' Start listening for client requests.
server.Start()
' Buffer for reading data
Dim bytes(1024) As [Byte]
Dim data As [String] = Nothing
' Enter the listening loop.
While True
Console.Write("Waiting for a connection... ")
' Perform a blocking call to accept requests.
' You could also user server.AcceptSocket() here.
Dim client As TcpClient = server.AcceptTcpClient()
Console.WriteLine("Connected!")
data = Nothing
' Get a stream object for reading and writing
Dim stream As NetworkStream = client.GetStream()
Dim i As Int32
' Loop to receive all the data sent by the client.
i = stream.Read(bytes, 0, bytes.Length)
While (i <> 0)
' Translate data bytes to a ASCII string.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
Console.WriteLine([String].Format("Received: {0}", data))
' Process the data sent by the client.
data = data.ToUpper()
Dim msg As [Byte]() = System.Text.Encoding.ASCII.GetBytes(data)
' Send back a response.
stream.Write(msg, 0, msg.Length)
Console.WriteLine([String].Format("Sent: {0}", data))
i = stream.Read(bytes, 0, bytes.Length)
End While
' Shutdown and end connection
client.Close()
End While
Catch e As SocketException
Console.WriteLine("SocketException: {0}", e)
End Try
Console.WriteLine(ControlChars.Cr + "Hit enter to continue...")
Console.Read()
End Sub 'Main
End Class 'MyTcpListener
[C#]
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
class MyTcpListener
{
public static void Main()
{
try
{
// Set the TcpListener on port 13000.
Int32 port = 13000;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
// TcpListener server = new TcpListener(port);
TcpListener server = new TcpListener(localAddr, port);
// Start listening for client requests.
server.Start();
// Buffer for reading data
Byte[] bytes = new Byte[256];
String data = null;
// Enter the listening loop.
while(true)
{
Console.Write("Waiting for a connection... ");
// Perform a blocking call to accept requests.
// You could also user server.AcceptSocket() here.
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Connected!");
data = null;
// Get a stream object for reading and writing
NetworkStream stream = client.GetStream();
int i;
// Loop to receive all the data sent by the client.
while((i = stream.Read(bytes, 0, bytes.Length))!=0)
{
// Translate data bytes to a ASCII string.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine(String.Format("Received: {0}", data));
// Process the data sent by the client.
data = data.ToUpper();
byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
// Send back a response.
stream.Write(msg, 0, msg.Length);
Console.WriteLine(String.Format("Sent: {0}", data));
}
// Shutdown and end connection
client.Close();
}
}
catch(SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
Console.WriteLine("\nHit enter to continue...");
Console.Read();
}
}
[C++]
#using <mscorlib.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Net;
using namespace System::Net::Sockets;
using namespace System::Text;
void main() {
try {
// Set the TcpListener on port 13000.
Int32 port = 13000;
IPAddress* localAddr = IPAddress::Parse(S"127.0.0.1");
// TcpListener* server = new TcpListener(port);
TcpListener* server = new TcpListener(localAddr, port);
// Start listening for client requests.
server->Start();
// Buffer for reading data
Byte bytes[] = new Byte[256];
String* data = 0;
// Enter the listening loop.
while (true) {
Console::Write(S"Waiting for a connection... ");
// Perform a blocking call to accept requests.
// You could also user server.AcceptSocket() here.
TcpClient* client = server->AcceptTcpClient();
Console::WriteLine(S"Connected!");
data = 0;
// Get a stream Object* for reading and writing
NetworkStream* stream = client->GetStream();
Int32 i;
// Loop to receive all the data sent by the client.
while (i = stream->Read(bytes, 0, bytes->Length)) {
// Translate data bytes to a ASCII String*.
data = Text::Encoding::ASCII->GetString(bytes, 0, i);
Console::WriteLine(String::Format(S"Received: {0}", data));
// Process the data sent by the client.
data = data->ToUpper();
Byte msg[] = Text::Encoding::ASCII->GetBytes(data);
// Send back a response.
stream->Write(msg, 0, msg->Length);
Console::WriteLine(String::Format(S"Sent: {0}", data));
}
// Shutdown and end connection
client->Close();
}
} catch (SocketException* e) {
Console::WriteLine(S"SocketException: {0}", e);
}
Console::WriteLine(S"\nHit 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 (送信接続を確立するか、受信要求を受け入れるためのアクセス許可)