次の方法で共有


TcpListener.AcceptTcpClient メソッド

保留中の接続要求を受け入れます。

Public Function AcceptTcpClient() As TcpClient
[C#]
public TcpClient AcceptTcpClient();
[C++]
public: TcpClient* AcceptTcpClient();
[JScript]
public function AcceptTcpClient() : TcpClient;

戻り値

データの送受信に使用する TcpClient

例外

例外の種類 条件
InvalidOperationException リスナが、 Start への呼び出しで開始されていません。

解説

AcceptTcpClient は、データの送受信に使用できる TcpClient を返すブロッキング メソッドです。ブロックしないようにする場合は、 Pending メソッドを使用して、接続要求が受信接続キュー内で使用可能かどうかを確認します。

TcpClient.GetStream を使用して、返される TcpClient の基になる NetworkStream を取得します。 NetworkStream は、リモート ホストを使用して送受信を行うためのメソッドを提供します。 TcpClient の使用を終了したら、必ず Close メソッドを呼び出してください。 TcpClient よりも柔軟性が必要な場合は、 AcceptSocket を使用します。

使用例

[Visual Basic, C#, C++] AcceptTcpClient を使用して TcpClient を取得する例を次に示します。この TcpClient は、新しく接続したクライアントとの通信に使用します。

 
' The following function creates a TcpServer that connects to  
' the specified port (13000).
' Refer to the related client in the TcpClient class. 

Public Shared Sub Main()
   
   Try
      ' Set the TcpListener on port 13000.
      Dim port As Int32 = 13000
      Dim server As New TcpListener(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

[C#] 
/**
 * The following function creates a TcpServer that connects to  
 * the specified port (13000).Any TcpClient that wants to use this server
 * has to explicitly connect to an address obtained by the combination of
 * the sever on which this TCpServer is runnig and the port 13000. 
 * This TcpServer simply echoes back the message sent by the TcpClient, after
 * translating it into uppercase. 
 * Refer to the related client in the TcpClient class. 
 **/ 
public static void Main()
{    
 
  try
  {
    // Set the TcpListener on port 13000.
    Int32 port = 13000;
    TcpListener server = new TcpListener(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();

      Int32 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++] 
/**
 * The following function creates a TcpServer that connects to  
 * the specified port (13000).Any TcpClient that wants to use this server
 * has to explicitly connect to an address obtained by the combination of
 * the sever on which this TCpServer is runnig and the port 13000. 
 * This TcpServer simply echoes back the message sent by the TcpClient, after
 * translating it into uppercase. 
 * Refer to the related client in the TcpClient class. 
 **/ 
int main()
{    

   try
   {
      // Set the TcpListener on port 13000.
      Int32 port = 13000;
      TcpListener* server = new TcpListener(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))!=0) 
         {   
            // Translate data bytes to a ASCII string.
            data = System::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[] = System::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++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: 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

参照

TcpListener クラス | TcpListener メンバ | System.Net.Sockets 名前空間 | TcpClient | AcceptSocket | Socket | NetworkStream