在C#中,TcpListener
类用于创建一个TCP服务器,监听来自客户端的连接请求。以下是创建一个简单的TCP服务器的步骤:
- 引入必要的命名空间:
using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks;
- 创建一个
TcpListener
实例,指定监听的IP地址和端口号:
IPHostAddress ipAddress = IPAddress.Any; // 监听所有可用的网络接口 int port = 12345; // 选择一个端口号 TcpListener listener = new TcpListener(ipAddress, port);
- 开始监听客户端连接请求:
listener.Start(); Console.WriteLine("Server is listening on port " + port);
- 使用异步方法接受客户端连接:
while (true) { // 接受客户端连接请求 TcpClient client = await listener.AcceptTcpClientAsync(); Console.WriteLine("Client connected: " + client.Client.RemoteEndPoint.ToString()); // 处理客户端请求 Task.Run(() => HandleClient(client)); }
- 定义处理客户端请求的方法:
private static async Task HandleClient(TcpClient client) { NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; int bytesRead; // 读取客户端发送的数据 while ((bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length)) != 0) { string data = https://www.yisu.com/ask/Encoding.UTF8.GetString(buffer, 0, bytesRead);"Received from client: " + data); // 响应客户端 string response = "Hello from server!"; byte[] responseBytes = Encoding.UTF8.GetBytes(response); await stream.WriteAsync(responseBytes, 0, responseBytes.Length); } // 关闭客户端连接 client.Close(); Console.WriteLine("Client disconnected: " + client.Client.RemoteEndPoint.ToString()); }
- 在
Main
方法中启动服务器:
static void Main(string[] args)
{
// 创建TCP监听器
TcpListener listener = new TcpListener(IPAddress.Any, 12345);
// 开始监听客户端连接请求
listener.Start();
Console.WriteLine("Server is listening on port 12345");
// 使用异步方法接受客户端连接
while (true)
{
TcpClient client = await listener.AcceptTcpClientAsync();
Console.WriteLine("Client connected: " + client.Client.RemoteEndPoint.ToString());
// 处理客户端请求
Task.Run(() => HandleClient(client));
}
}
这个示例创建了一个简单的TCP服务器,监听端口12345,并在接收到客户端连接请求时发送一条响应消息。你可以根据需要修改这个示例,以满足你的具体需求。