posted at 2022.3.20 18: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:运行应用程序,可以从控制台的输出中看到服务器所接收到的消息。
如图所示:
dafaff80-8ceb-4e5d-805f-74c40b6a02cd|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Tags: C#, 程序, 方法, 类, 数据
IT技术