1. TCP通信基础与WPF整合场景
TCP协议作为传输层核心协议,其可靠传输特性使其成为设备通信的首选方案。在工业控制系统中,我们经常能看到PLC与上位机通过TCP保持长连接,实时传输传感器数据。而在WPF应用中实现TCP通信,最典型的场景莫过于局域网聊天工具——就像我们团队去年开发的车间设备监控系统,操作员在控制室就能实时查看流水线状态。
要实现这个目标,需要理解三个核心对象:
- TcpListener:相当于工厂的门卫,持续监听特定端口
- TcpClient:如同送货的卡车,建立与服务器的物理连接
- NetworkStream:好比传送带,负责实际的数据搬运
在WPF中集成这些组件时,有个关键陷阱:网络回调线程不能直接操作UI。这就像车间工人不能直接修改控制室显示屏——必须通过Dispatcher这个"车间主任"来协调。我曾在项目中因为忽略这点导致界面卡死,后来通过Dispatcher.BeginInvoke解决了线程安全问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 服务器端实现详解
2.1 监听服务搭建
创建TCP服务器就像开一家餐厅:
- 先确定营业地址(IP地址)
- 设置门牌号(端口号)
- 安排迎宾员(TcpListener)
csharp复制private TcpListener _listener;
private void StartListening(string ip, int port)
{
_listener = new TcpListener(IPAddress.Parse(ip), port);
_listener.Start();
// 后台线程处理连接请求
var listenThread = new Thread(ListenForClients)
{
IsBackground = true
};
listenThread.Start();
}
这里有个实用技巧:将线程设为IsBackground=true,这样程序退出时会自动终止线程,避免僵尸进程。我曾忘记设置这个属性,导致服务停止后线程仍在运行占用端口。
2.2 客户端连接管理
处理客户端连接就像接待顾客:
csha复制
