System.Net.Sockets TcpClient 类
为 TCP 网络服务提供客户端连接。 有关此类型所有成员的列表,请参阅 TcpClient 成员。 System.Object [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 创建的 TcpListener 或 Socket 必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器:
注意 如果要在同步阻塞模式下发送无连接数据报,请使用 UdpClient 类。 对继承者的说明: 要发送和接收数据,请使用 GetStream 方法来获取一个 NetworkStream。调用 NetworkStream 的 Write 和 Read 方法与远程主机之间发送和接收数据。使用 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 | |