leves

使一切更加简单!

导航

System.Net.Sockets TcpClient 类

 MSDN Home >  .NET Framework >  参考 >  类库 >  System.Net.Sockets
.NET Framework 类库  

TcpClient 类

为 TCP 网络服务提供客户端连接。

有关此类型所有成员的列表,请参阅 TcpClient 成员

System.Object
   System.Net.Sockets.TcpClient

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

线程安全

此类型的所有公共静态(Visual Basic 中为 Shared)成员是线程安全的。但不保证任何实例成员是线程安全的。

备注

TcpClient 类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。

为使 TcpClient 连接并交换数据,使用 TCP ProtocolType 创建的 TcpListenerSocket 必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器:

  • 创建一个 TcpClient,并调用三个可用的 Connect 方法之一。
  • 使用远程主机的主机名和端口号创建 TcpClient。此构造函数将自动尝试一个连接。
注意   如果要在同步阻塞模式下发送无连接数据报,请使用 UdpClient 类。

对继承者的说明:  要发送和接收数据,请使用 GetStream 方法来获取一个 NetworkStream。调用 NetworkStreamWriteRead 方法与远程主机之间发送和接收数据。使用 Close 方法释放与 TcpClient 关联的所有资源。

示例

[Visual Basic, C#, C++] 下面的示例建立 TcpClient 连接。

[Visual Basic] 
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 ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版

程序集: System (在 System.dll 中)

.NET Framework 安全性: 

请参见

TcpClient 成员 | System.Net.Sockets 命名空间 | TcpListener | NetworkStream | TCP/UDP | Socket | ProtocolType | IPEndPoint | Connect | Write | Read

posted on 2005-09-27 20:54  leves  阅读(3148)  评论(1编辑  收藏  举报