为 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
浙公网安备 33010602011771号