System.Net.Sockets.TcpClient

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

命名空间:System.Net.Sockets
汇编集:System(在 system.dll 中)

语法

public class TcpClient : IDisposable

备注

TcpClient 类为了在同步阻塞模式中通过网络来连接、发送,并且接收数据流而提供了简单的方法。

如果要让 TcpClient 能够连接并且交换数据,就需要以 TCP 的 ProtocolType 创建一个 TcpListener 或者 Socket 来监听输入连接请求。你可以通过下列方式来连接到这个监听器:

  • 创建一个 TcpClient 并且调用三种可用的 Connect 方法之一。
  • 使用远程主机的主机名称和端口号来创建一个 TcpClient。并且这个构造器还会自动尝试一个连接。

提示:如果你需要在同步阻塞模式中发送无连接的数据包,就可以考虑使用 UdpClient 类。

继承者要注意:如果要发送和接收数据,就可以使用 GetStream 方法来获取一个 NetworkStream。然后调用 NetworkStream 的 Write 和 Read 方法来发送和接收远程主机的数据。另外,还需要使用 Close 方法来释放所有与该 TcpClient 相关的资源。

范例

下列代码建立了一个 TcpClient 连接。

static void Connect(String server, String message) 

{

  try 

  {

    // 创建一个 TcpClient。

    // 提示:如果要让该客户端工作,你需要拥有一个连接到相同地址(通过被指定的服务器和端口组合)的 TcpServer。

    Int32 port = 13000;

    TcpClient client = new TcpClient(server, port);

    

    // 把已传递的消息转化成 ASCII 并且存储成 Byte 数组。

    Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);         



    // 为读取和写入操作而获取客户端数据流。

   //  Stream stream = client.GetStream();

    

    NetworkStream stream = client.GetStream();



    // 把消息发送到已连接的 TcpServer。

    stream.Write(data, 0, data.Length);



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



    // 接收 TcpServer 的回应。

    

    // 缓存回应字节。

    data = new Byte[256];



    // 存储回应 ASCII 呈现的字符串。

    String responseData = String.Empty;



    // 读取 TcpServer 回应字节中的第一批数据。

    Int32 bytes = stream.Read(data, 0, data.Length);

    responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);

    Console.WriteLine("Received: {0}", responseData);         



    // 关闭所有。

    stream.Close();         

    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();

}

.NET Framework 安全性

  • SocketPermission:建立一个输出连接或者接受一个输入请求。

继承层次

System.Object 

  System.Net.Sockets.TcpClient

你可能感兴趣的:(socket)