为 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