C# WinForm TCP-Socket
一、TCP 基础理论知识点 对应代码1.1 TCP 四大核心特点背诵知识点面向连接通信前三次握手建立连接流式无边界传输数据连续流传输需要固定缓冲区接收可靠传输自带确认重传无丢包全双工两端可同时收发数据1.2 Socket 核心构造参数知识点 对应代码知识点TCP 套接字固定三参数IPv4地址族、流式套接字、TCP协议// 对应考点TCP协议参数固定写法 new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);参数释义AddressFamily.InterNetwork使用 IPv4 协议SocketType.StreamTCP 流式传输ProtocolType.Tcp指定 TCP 通信协议二、服务端五步法new Socket()创建服务端监听对象Bind()绑定本机 IP 端口Listen(100)开启端口监听Accept()阻塞接收客户端连接Receive()循环接收客户端数据步骤1创建服务端Socket对象知识点代码知识点服务端全局声明Socket对象用于监听客户端连接// 服务端核心监听对象 Socket server null;步骤2自动获取本机IPv4地址知识点代码知识点自动遍历本机所有网卡筛选IPv4地址适配不同电脑string ipStr ; int port 63323; // 高位端口避免冲突 // 获取本机所有网络地址 IPHostEntry host Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress item in host.AddressList) { // 只保留IPv4 if (item.AddressFamily AddressFamily.InterNetwork) { ipStr item.ToString(); } }步骤3绑定IP和端口Bind知识点代码知识点将Socket与本机IP、端口绑定对外开放服务端口IPAddress address IPAddress.Parse(ipStr); IPEndPoint endPoint new IPEndPoint(address, port); server.Bind(endPoint); // 绑定端口核心方法步骤4开启端口监听Listen知识点代码知识点Listen(最大挂起连接数)开启端口监听等待客户端接入server.Listen(100); // 允许最多100个排队连接步骤5异步监听多客户端连接Accept知识点代码知识点双层Task嵌套外层循环接收新客户端实现多客户端通信CancellationTokenSource cts; public void AcceptDataMul() { cts new CancellationTokenSource(); Task.Run(() { while (!cts.IsCancellationRequested) { // 阻塞接收客户端连接 Socket client server.Accept(); } }, cts.Token); }步骤6单客户端独立接收数据知识点代码知识点每个客户端独立子线程接收数据互不干扰修复TCP粘包BUG// 固定缓冲区解决TCP流式无边界粘包问题 byte[] buffer new byte[1024 * 10]; int length client.Receive(buffer); if (length 0) break; // 客户端离线断开步骤7跨线程UI更新必考知识点代码知识点子线程禁止直接操作UI必须使用Invoke回调主线程string recStr Encoding.UTF8.GetString(buffer, 0, length); Invoke(new Action(() { richTextBox1.AppendText(recStr Environment.NewLine); }));步骤8客户端断开资源释放知识点代码知识点捕获异常主动关闭套接字避免端口占用、内存泄漏catch (Exception) { client.Close(); client.Dispose(); break; }服务端关键考点自动筛选本机IPv4地址排除 IPv6多客户端原理双层 Task 外层循环 Accept 接客户端 内层每个客户端独立线程收数据跨线程 UI 报错解决子线程更新控件必须用InvokeTCP 粘包修复固定缓冲区new byte[1024*10]线程安全CancellationTokenSource安全终止后台任务四、客户端四步法创建客户端 Socket指定服务端IPEndPointIP 端口ConnectAsync 异步连接不卡死 UISend()发送数据步骤1声明客户端Socket知识点代码知识点单客户端通信仅需一个Socket对象Socket client;步骤2创建客户端Socket知识点代码知识点客户端参数与服务端一致保证通信协议匹配client new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);步骤3配置服务端终端节点知识点代码知识点客户端必须指定服务端精准IP端口才能连接IPEndPoint endpoint new IPEndPoint(IPAddress.Parse(192.168.219.12), 63323);步骤4异步连接服务端核心考点代码知识点ConnectAsync异步连接不阻塞UI主线程避免界面卡死await client.ConnectAsync(endpoint);步骤5连接成功UI状态联动知识点代码知识点禁止重复连接按钮状态互斥优化交互逻辑label1.Text 连接成功; button1.Enabled false; button2.Enabled true;步骤6连接失败容错处理知识点代码知识点捕获服务端未开启、IP错误、端口错误异常label1.Text 连接成功; button1.Enabled false; button2.Enabled true;五、客户端发送数据 知识点逐段对应5.1 连接状态校验防报错知识点代码知识点发送数据前必须判断Socket非空、处于连接状态if (client null || !client.Connected) { MessageBox.Show(还没连接到服务器请先连接服务器); return; }5.2 空数据校验规范考点代码知识点禁止发送空数据无效通信拦截if (string.IsNullOrEmpty(textBox1.Text)) { MessageBox.Show(发送数据不能为空); return; }5.3 UTF8编码转换乱码解决考点代码知识点收发统一UTF8编码彻底解决中文乱码byte[] data Encoding.UTF8.GetBytes(textBox1.Text); client.Send(data); label1.Text 发送成功;5.4 异常完整资源释放高频考点代码知识点三段式资源释放关闭通道→关闭连接→释放资源if (client ! null) { if (client.Connected) client.Shutdown(SocketShutdown.Both); // 关闭读写通道 client.Close(); // 关闭连接 client.Dispose(); // 释放资源 } // 重置按钮状态 button1.Enabled true; button2.Enabled false;客户端安全规范发送前判空client!null client.Connected禁止发送空字符串统一UTF8 编码防止中文乱码异常三步释放资源Shutdown→Close→Dispose五、高频易错点5.1 线程安全控制CancellationToken知识点使用取消令牌安全终止异步线程杜绝后台线程残留CancellationTokenSource cts2 new CancellationTokenSource(); Task.Run(() {}, cts2.Token);5.2 修复TCP原生粘包BUG知识点废弃 client.Available 动态缓冲区使用固定缓冲区循环接收// 正确写法 byte[] buffer new byte[1024 * 10]; int length client.Receive(buffer); // 错误原生写法已废弃 // byte[] buffer new byte[client.Available];禁止子线程直接操作 UI必须 InvokeTCP 无数据边界禁用 client.Available端口建议高位10000防冲突客户端 IP 必须与服务端本机 IPv4 一致必须异步连接同步 Connect 会卡死界面通信完毕必须释放资源否则端口占用、内存泄漏

相关新闻

Istio 服务网格入门:流量管理、安全与可观测性

Istio 服务网格入门:流量管理、安全与可观测性

Istio 服务网格入门:流量管理、安全与可观测性工具地址:https://www.speedce.com 社区论坛:https://bbs.speedce.com 联系:speedceadsgmail.com写在前面 服务网格增加了复杂度,外部可达性验收更重要。 本文是一份围绕「…

2026/8/26 19:10:54 阅读更多 →
16|设计一个AI业务知识分析台:它首先应该解决BA的哪些任务?

16|设计一个AI业务知识分析台:它首先应该解决BA的哪些任务?

食味里“川香鸡腿饭套餐”项目结束后,BA林悦做了一次复盘。她发现自己每天都在不同工具之间搬运同一批业务信息。 企微里是商品、研发、供应链和门店的讨论;录音转写里藏着尚未确认的业务规则;OA附件里有新品审批;Excel里维护产品…

2026/8/26 19:09:53 阅读更多 →
具身智能TVA-VLA实现前瞻协同交互新突破

具身智能TVA-VLA实现前瞻协同交互新突破

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”或“TVA视觉智能体”)是依托Transformer架构与“因式智能体”理论构建的系统级视觉技术框架。它融合深度强化学习(DRL)、卷积神…

2026/8/26 19:09:53 阅读更多 →

最新新闻

从Swift 2到4.2:SwiftyTimer版本演进史与Swifty API设计哲学

从Swift 2到4.2:SwiftyTimer版本演进史与Swifty API设计哲学

从Swift 2到4.2:SwiftyTimer版本演进史与Swifty API设计哲学 【免费下载链接】SwiftyTimer Swifty API for NSTimer 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftyTimer SwiftyTimer 是一个用 Swift 编写的 NSTimer 定时器工具库,它提供 S…

2026/8/26 19:44:37 阅读更多 →
InternVL3_5-GPT-OSS-20B-A4B-Preview-HF 多模态大模型训练原理揭秘:CascadeRL 级联强化学习如何带来 16% 推理性能提升

InternVL3_5-GPT-OSS-20B-A4B-Preview-HF 多模态大模型训练原理揭秘:CascadeRL 级联强化学习如何带来 16% 推理性能提升

InternVL3_5-GPT-OSS-20B-A4B-Preview-HF 多模态大模型训练原理揭秘:CascadeRL 级联强化学习如何带来 16% 推理性能提升 【免费下载链接】InternVL3_5-GPT-OSS-20B-A4B-Preview-HF 项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVL3_5-GPT-OSS-2…

2026/8/26 19:44:37 阅读更多 →
2026年AI原生智能体招聘平台:GoHire.TOP

2026年AI原生智能体招聘平台:GoHire.TOP

GoHire 完整产品介绍 GoHire 是一款 AI 原生智能体招聘平台,帮助企业比其他人更快招到精英人才。它的 AI 招聘助手自动筛选简历、进行面试,并为每位候选人提供综合评估报告,把招聘周期从平均 42 天压缩到 3 天。 官网:GoHire - H…

2026/8/26 19:44:37 阅读更多 →
大型量产固件的工程实践(六):嵌入式错误码体系设计

大型量产固件的工程实践(六):嵌入式错误码体系设计

大型量产固件的工程实践(六):嵌入式错误码体系设计 本文是《大型量产固件的工程实践》专栏第 6 篇。 上一篇:第 5 篇《自研轻量 RTOS 内核设计》 | 下一篇:第 7 篇《嵌入式调试日志系统设计》 一、为什么需要统一的错误码 没有统一错误码的固件,错误处理是混乱的: //…

2026/8/26 19:43:36 阅读更多 →
InternVL3.5-30B-A3B流式输出实战:如何实现逐字实时输出体验

InternVL3.5-30B-A3B流式输出实战:如何实现逐字实时输出体验

InternVL3.5-30B-A3B流式输出实战:如何实现逐字实时输出体验 【免费下载链接】InternVL3_5-30B-A3B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVL3_5-30B-A3B-Instruct InternVL3.5-30B-A3B-Instruct 是书生万象(I…

2026/8/26 19:43:36 阅读更多 →
WanAndroid-Flutter项目全解:张鸿洋推荐的开源项目,为什么是Flutter入门实战的最佳选择

WanAndroid-Flutter项目全解:张鸿洋推荐的开源项目,为什么是Flutter入门实战的最佳选择

WanAndroid-Flutter项目全解:张鸿洋推荐的开源项目,为什么是Flutter入门实战的最佳选择 【免费下载链接】WanAndroid-Flutter Flutter版本 WanAndroid客户端 适合Flutter入门学习 被张鸿洋微信公众号推荐为优质Flutter开源项目啦 项目地址: https://gi…

2026/8/26 19:43:36 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →