命名空间:
System.Net.Sockets
Assemblies:
System.Net.Sockets.dll, System.dll, netstandard.dll
为 TCP
网络服务提供客户端连接。
public class TcpClient : IDisposable
示例
下面的代码示例建立TcpClient
连接。
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.
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();
}
注解
TcpClient
类提供了简单方法来连接、 发送,并接收中同步阻止模式下通过网络流式传输数据。
为了使TcpClient
连接和交换数据,TcpListener
或Socket
使用 TCP
创建ProtocolType
必须侦听传入连接请求。 可以在以下两种方式之一连接到此侦听器:
- 创建
TcpClient
并调用其中一个可用的三个Connect
方法。 - 创建TcpClient使用主机名和端口号的远程主机。 此构造函数将自动尝试进行连接。
备注
如果你想要将无连接的数据报发送在同步阻塞模式下,使用UdpClient
类。
继承者说明
若要发送和接收数据,请使用GetStream()
方法来获取NetworkStream
。 调用Write(Byte[], Int32, Int32)
并Read(Byte[], Int32, Int32)
方法的NetworkStream
发送和接收数据与远程主机。 使用Close(Int32)
方法来释放与关联的所有资源TcpClient
。
构造函数
名称 | 说明 |
---|---|
TcpClient() | 初始化 TcpClient 类的新实例。 |
TcpClient(AddressFamily) | 使用指定的族初始化 TcpClient 类的新实例。 |
TcpClient(IPEndPoint) | 初始化 TcpClient 类的新实例,并将其绑定到指定的本地终结点。 |
TcpClient(String, Int32) | 初始化 TcpClient 类的新实例并连接到指定主机上的指定端口。 |
属性
名称 | 说明 |
---|---|
Active | 获取或设置一个值,它指示是否已建立连接。 |
Available | 获取已经从网络接收且可供读取的数据量。 |
Client | 获取或设置基础 Socket。 |
Connected | 获取一个值,该值指示 Socket 的基础 TcpClient 是否已连接到远程主机。 |
ExclusiveAddressUse | 获取或设置 Boolean 值,指定 TcpClient 是否只允许一个客户端使用端口。 |
LingerState | 获取或设置有关关联的套接字的延迟状态的信息。 |
NoDelay | 获取或设置一个值,该值在发送或接收缓冲区未满时禁用延迟。 |
ReceiveBufferSize | 获取或设置接收缓冲区的大小。 |
ReceiveTimeout | 获取或设置在初始化一个读取操作以后 TcpClient 等待接收数据的时间量。 |
SendBufferSize | 获取或设置发送缓冲区的大小。 |
SendTimeout | 获取或设置 TcpClient 等待发送操作成功完成的时间量。 |
方法
名称 | 说明 |
---|---|
BeginConnect(IPAddress, Int32, AsyncCallback, Object) | 开始一个对远程主机连接的异步请求。 远程主机由 IPAddress 和端口号 (Int32) 指定。 |
BeginConnect(IPAddress[], Int32, AsyncCallback, Object) | 开始一个对远程主机连接的异步请求。 远程主机由 IPAddress 数组和端口号 (Int32) 指定。 |
BeginConnect(String, Int32, AsyncCallback, Object) | 开始一个对远程主机连接的异步请求。 远程主机由主机名 (String) 和端口号 (Int32) 指定。 |
Close() | 释放此 TcpClient 实例,并请求关闭基础 TCP 连接。 |
Connect(IPAddress, Int32) | 使用指定的 IP 地址和端口号将客户端连接到 TCP 主机。 |
Connect(IPAddress[], Int32) | 使用指定的 IP 地址和端口号将客户端连接到远程 TCP 主机。 |
Connect(IPEndPoint) | 使用指定的远程网络终结点将客户端连接到远程 TCP 主机。 |
Connect(String, Int32) | 将客户端连接到指定主机上的指定端口。 |
ConnectAsync(IPAddress, Int32) | 使用指定的 IP 地址和端口号将客户端连接到远程 TCP 主机以作为异步操作。 |
ConnectAsync(IPAddress[], Int32) | 使用指定的 IP 地址和端口号将客户端连接到远程 TCP 主机以作为异步操作。 |
ConnectAsync(String, Int32) | 将客户端连接到指定主机上的指定 TCP 端口以作为异步操作。 |
Dispose() | 释放由 TcpClient 占用的托管和非托管资源。 |
Dispose(Boolean) | 释放由 TcpClient 占用的非托管资源,还可以另外再释放托管资源。 |
EndConnect(IAsyncResult) | 结束挂起的异步连接尝试。 |
Equals(Object) | 确定指定的对象是否等于当前对象。 |
(Inherited from Object) | |
Finalize() | 释放 TcpClient 类使用的资源。 |
GetHashCode() | 作为默认哈希函数。 |
(Inherited from Object) | |
GetStream() | 返回用于发送和接收数据的 NetworkStream。 |
GetType() | 获取当前实例的 Type。 |
(Inherited from Object) | |
MemberwiseClone() | 创建当前 Object 的浅表副本。 |
(Inherited from Object) | |
ToString() | 返回表示当前对象的字符串。 |
(Inherited from Object) |
显式界面实现
IDisposable.Dispose()
释放由 TcpClient
使用的所有资源。
安全性
SocketPermission
若要建立传出连接,或接受传入请求的权限。