C# TCP自动接收数据
时间: 2024-09-08 12:00:57 浏览: 23
在C#中,要创建一个TCP服务器并自动接收数据,你可以使用`System.Net.Sockets`命名空间下的`TcpListener`类。以下是一个简单的示例,展示如何设置一个监听器、接收连接以及处理接收到的数据:
```csharp
using System;
using System.IO;
using System.Net;
class TcpServer
{
private TcpListener listener;
private const int Port = 12345; // 指定端口号
public TcpServer()
{
// 创建TCP监听器
listener = new TcpListener(IPAddress.Any, Port);
listener.Start();
Console.WriteLine($"TCP server started on port {Port}.");
AcceptClient();
}
private void AcceptClient()
{
while (true)
{
// 接受新连接
var client = listener.AcceptTcpClient();
Console.WriteLine("Accepted connection from: " + client.Client.RemoteEndPoint);
// 新线程处理每个客户端请求,避免阻塞主线程
ThreadPool.QueueUserWorkItem(HandleClient, client);
}
}
private void HandleClient(object state)
{
TcpClient client = (TcpClient)state;
NetworkStream networkStream = client.GetStream();
using (StreamReader reader = new StreamReader(networkStream))
{
string data;
// 循环读取直到没有数据
while ((data = reader.ReadLine()) != null)
{
Console.WriteLine($"Received data from client: {data}");
// 在这里可以对数据做进一步处理,例如存储到数据库或显示在界面上
}
}
// 关闭连接
client.Close();
}
// 主函数入口
static void Main(string[] args)
{
new TcpServer();
}
}
```
在这个例子中,当有新的连接到来时,会启动一个新的线程来处理,这样不会阻塞主线程。你需要替换`HandleClient`方法中的数据处理逻辑。