TcpListener 与TcpClient

posted at 2022.3.20 16:13 by Administrator

TcpListener 类与TcpClient类是C#框架提供的封装类型,它们包装了基于TCP协议的Socket通信,使网络编程变得更简单。

TcpListener类负责两件事:一是开启或停止监听来自客户端的连接请求;二是接受连接,并产生一个新的TcpListener实例(用于通信)。

   TcpClient类仅用于发送或接收消息。在服务器上,该类的实例由TcpListener实例的AcceptTcpClient方法返回;在客户端,只需要单个TcpClient实例即可完成通信,但在通信之前要调用Connect方法连接服务器。经过封闭后,TcpClient以流的方式发送和接收数据,这使得数据传输更容易掌控。建立连接后,调用TcpClient实例的GetStream方法,得到一个NetworkStream实例。NetworkStream类从Stream类派生,可以很方便地写入或读取字节序列。

以下实例将演示以下通信功能:服务器使用TcpListener类进行监听,客户端用TcpClient类改进连接请求。当连接建立之后,客户端发送一条文本消息给服务器,服务器接收到消息后将其输出到控制台。

【操作流程】

以下是服务器部分。

步骤1创建TcpListener实例,监听端口为1999,地址为本地计算机的地址。

TcpListener server = new TcpListener(IPAddress.Any, 1999);

步骤2调用Start方法,开始监听。

server.Start();

步骤3等待客户端连接。

TcpClient client = server.AcceptTcpClient();

步骤4建立连接后,读取从客户端发来的消息。

     using(NetworkStream stream = client.GetStream())

           {

               List<byte> data = new List<byte>();

               byte[] buffer = newbyte[256];

               int n = 0;

               while((n = stream.Read(buffer)) != 0)

               {

                   data.AddRange(buffer.Take(n));

               }

               // 转换为字符串

                  string msg = Encoding.UTF8.GetString(data.ToArray());

                   Console.WriteLine($"\n来自客户端的消息:{msg}");

            }

步骤5调用Stop方法,停止监听。

server.Stop();

以下是客户端部分。

步骤6创建TcpClient实例。

TcpClient client = new TcpClient();

步骤7向服务器发起连接请求。

client.Connect(IPAddress.Parse("127.0.0.1"), 1999);

步骤8向服务器发送消息

      using(NetworkStream stream = client.GetStream())

          {

              string ct = "This worldcite is excellence!";

              byte[] data = Encoding.UTF8.GetBytes(ct);

               stream.Write(data);

          }

 

步骤9运行应用程序,可以从控制台的输出中看到服务器所接收到的消息。

如图所示:

Tags: , , , ,

IT技术

添加评论

  Country flag

biuquote
  • 评论
  • 在线预览
Loading