【微软技术栈】C#.NET 使用 TcpClient 和 TcpListener

本文内容

  1. 使用 TcpClient 和 TcpListener
  2. 创建 IP 终结点
  3. 创建 TcpClient
  4. 创建 TcpListener
  5. 具有 Socket 类的有限 TCP 控制

对于高级用户,强烈建议使用 Socket 类,而不是 TcpClient 和 TcpListener

若要使用传输控制协议 (TCP),有两个选项:使用 Socket 以获得最大控制和性能,或使用 TcpClient 和 TcpListener 帮助程序类。 TcpClient 和 TcpListener 是在 System.Net.Sockets.Socket 类的基础上建立的,并负责传输数据的详细信息以便于使用。

协议类使用基础 Socket 类提供简单的网络服务访问,没有维护状态信息的开销,也无需了解设置协议特定的套接字的详细信息。 若要使用异步 Socket 方法,可以使用 NetworkStream 类提供的异步法。 若要访问未被协议类公开的 Socket 类功能,必须使用 Socket 类。

TcpClient 和 TcpListener 代表使用 NetworkStream 类的网络。 使用 GetStream 方法返回网络流,然后调用此流的 NetworkStream.ReadAsync 和 NetworkStream.WriteAsync 方法。 NetworkStream 不拥有协议类的基础套接字,因此关闭它不会影响套接字。

1、使用 TcpClient 和 TcpListener

TcpClient 类使用 TCP 从 Internet 资源请求数据。 TcpClient 的方法和属性会摘录为了通过 TCP 请求和接收数据而创建的 Socket 的详细信息。 与远程设备的连接表示为流,因此可以使用 .NET Framework 流处理技术读取和写入数据。

TCP 协议与远程终结点建立连接,然后使用此连接发送和接收数据包。 TCP 负责确保将数据包发送到终结点,并在数据包到达时以正确的顺序对其进行汇编。

2、创建 IP 终结点

使用 System.Net.Sockets 时,将网络终结点表示为对象 IPEndPoint。 IPEndPoint 是使用 IPAddress 及其相应的端口号构造的。 在通过 Socket 发起对话之前,在应用和远程目标之间创建数据管道。

TCP/IP 使用一个网络地址和一个服务端口号来对唯一标识设备。 网络地址标识特定网络目标;端口号标识该设备要连接到的特定服务。 网络地址和服务端口的组合称为终结点,它在 .NET 中由 EndPoint 类表示。 会为每个受支持的地址系列定义 EndPoint 的后代;对于 IP 地址系列,类为 IPEndPoint

Dns 类向使用 TCP/IP Internet 服务的应用提供域名服务。 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C#中的TcpClientTcpListener是用于创建和处理TCP连接的类。TcpClient用于创建TCP客户端,而TcpListener用于创建TCP服务器。 TcpClient类用于在客户端与服务器之间建立连接。可以通过TcpClient对象的构造函数创建实例,并使用Connect方法连接到指定的服务器和端口。一旦连接建立,就可以使用NetworkStream来发送和接收数据。 以下是一个简单的示例代码,演示了如何使用TcpClient发送数据: ```csharp using System; using System.Net.Sockets; class Program { static void Main() { try { TcpClient client = new TcpClient("127.0.0.1", 8080); NetworkStream stream = client.GetStream(); string message = "Hello, Server!"; byte[] data = System.Text.Encoding.ASCII.GetBytes(message); stream.Write(data, 0, data.Length); Console.WriteLine("Message sent to the server."); stream.Close(); client.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } ``` TcpListener类用于创建TCP服务器,它监听指定的端口,并等待客户端的连接请求。可以使用AcceptTcpClient方法来接受客户端连接,并返回一个TcpClient对象以进行数据传输。 以下是一个简单的示例代码,演示了如何使用TcpListener接收数据: ```csharp using System; using System.Net; using System.Net.Sockets; class Program { static void Main() { TcpListener server = null; try { // 设置监听IP和端口 IPAddress ipAddress = IPAddress.Parse("127.0.0.1"); int port = 8080; server = new TcpListener(ipAddress, port); // 开始监听 server.Start(); Console.WriteLine("Server started. Waiting for clients..."); // 接受客户端连接 TcpClient client = server.AcceptTcpClient(); // 获取客户端的网络流 NetworkStream stream = client.GetStream(); byte[] data = new byte[1024]; // 读取客户端发送的数据 int bytesRead = stream.Read(data, 0, data.Length); string message = System.Text.Encoding.ASCII.GetString(data,0, bytesRead); Console.WriteLine("Received message: " + message); stream.Close(); client.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { if (server != null) server.Stop(); } } } ``` 这些是TcpClientTcpListener的基本用法示例。你可以根据你的需求进行进一步的开发和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉特思米(gitusme)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值