在C#中,要創建一個簡單的TCP監聽器,你可以使用System.Net.Sockets.TcpListener
類。以下是一個簡單的示例,展示了如何創建一個TCP監聽器并監聽來自客戶端的連接:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
class TcpListenerExample
{
static void Main(string[] args)
{
// 設置監聽的IP地址和端口號
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 8080;
// 創建一個TcpListener實例
TcpListener tcpListener = new TcpListener(ipAddress, port);
// 開始監聽
Console.WriteLine("開始監聽...");
tcpListener.Start();
// 等待客戶端連接
Console.WriteLine("等待客戶端連接...");
TcpClient client = await tcpListener.AcceptTcpClientAsync();
// 處理客戶端連接
HandleClientConnection(client);
// 關閉監聽器
Console.WriteLine("關閉監聽器...");
tcpListener.Stop();
}
static async Task HandleClientConnection(TcpClient client)
{
// 獲取客戶端的輸入和輸出流
NetworkStream inputStream = client.GetStream();
NetworkStream outputStream = client.GetStream();
// 讀取客戶端發送的數據
byte[] buffer = new byte[1024];
int bytesRead = await inputStream.ReadAsync(buffer, 0, buffer.Length);
string receivedData = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine($"收到客戶端消息: {receivedData}");
// 向客戶端發送響應
string response = "Hello from server!";
byte[] responseBytes = Encoding.UTF8.GetBytes(response);
await outputStream.WriteAsync(responseBytes, 0, responseBytes.Length);
Console.WriteLine("向客戶端發送響應: " + response);
// 關閉客戶端連接
client.Close();
}
}
這個示例中,我們首先創建了一個TcpListener
實例,并指定了監聽的IP地址和端口號。然后,我們調用Start()
方法開始監聽。當客戶端連接時,AcceptTcpClientAsync()
方法會返回一個TcpClient
實例,我們可以使用它來處理客戶端的輸入和輸出流。在這個例子中,我們只是簡單地讀取客戶端發送的數據,并向客戶端發送一條響應。最后,我們關閉客戶端連接并停止監聽器。