【无标题极简版的 TCP 服务端和客户端实现,保留核心功能,去掉复杂封装,适合快速测试:】

核心特点

  1. 服务端

    • 单线程监听,逐个处理客户端连接
    • 简单的收发数据逻辑
    • 自动处理客户端断开
  2. 客户端

    • 自动重连机制(失败后 3 秒重试)
    • 基本的消息发送和接收
    • 输入 "exit" 退出

使用方法

  1. 先运行服务端
  2. 再运行客户端
  3. 客户端输入消息发送,服务端会回复
  4. 客户端断开后会自动重连

这是最简化的实现,保留了 TCP 通信的核心功能,适合学习和测试使用。

复制代码
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class SimpleTcpServer
{
    static void Main()
    {
        TcpListener server = new TcpListener(IPAddress.Any, 8888);
        server.Start();
        Console.WriteLine("服务端启动,监听端口8888...");

        while (true)
        {
            // 接受客户端连接
            TcpClient client = server.AcceptTcpClient();
            Console.WriteLine("客户端已连接");

            // 处理客户端通信
            NetworkStream stream = client.GetStream();
            byte[] buffer = new byte[1024];
            
            while (true)
            {
                try
                {
                    // 读取客户端数据
                    int bytesRead = stream.Read(buffer, 0, buffer.Length);
                    if (bytesRead == 0) break;

                    string data = Encoding.UTF8.GetString(buffer, 0, bytesRead);
                    Console.WriteLine("收到:" + data);

                    // 响应客户端
                    byte[] response = Encoding.UTF8.GetBytes("已收到:" + data);
                    stream.Write(response, 0, response.Length);
                }
                catch
                {
                    break;
                }
            }

            client.Close();
            Console.WriteLine("客户端断开连接");
        }
    }
}

using System;
using System.Net.Sockets;
using System.Text;
using System.Threading;

class SimpleTcpClient
{
    static void Main()
    {
        while (true)
        {
            try
            {
                TcpClient client = new TcpClient();
                Console.WriteLine("尝试连接服务器...");
                client.Connect("127.0.0.1", 8888);
                Console.WriteLine("连接成功!");

                NetworkStream stream = client.GetStream();

                // 发送数据
                while (true)
                {
                    Console.Write("输入消息:");
                    string message = Console.ReadLine();
                    if (message == "exit") break;

                    byte[] data = Encoding.UTF8.GetBytes(message);
                    stream.Write(data, 0, data.Length);

                    // 接收响应
                    byte[] buffer = new byte[1024];
                    int bytesRead = stream.Read(buffer, 0, buffer.Length);
                    string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
                    Console.WriteLine("服务端响应:" + response);
                }

                client.Close();
                break;
            }
            catch (Exception ex)
            {
                Console.WriteLine("连接失败:" + ex.Message);
                Thread.Sleep(3000); // 3秒后重试
            }
        }
    }
}
相关推荐
mounter6252 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
特长腿特长2 小时前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5382 小时前
Linux环境变量
linux·运维·服务器
kebeiovo3 小时前
atomic原子操作实现无锁队列
服务器·c++
赛博云推-Twitter热门霸屏工具3 小时前
Twitter运营完整流程:从0到引流获客全流程拆解(2026)
运维·安全·自动化·媒体·twitter
CHHC18803 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器
ACP广源盛139246256734 小时前
破局 Type‑C 切换器痛点@ACP#GSV6155+LH3828/GSV2221+LH3828 黄金方案
c语言·开发语言·网络·人工智能·嵌入式硬件·计算机外设·电脑
帮我吧智能服务平台4 小时前
装备制造智能制造升级:远程运维与智能服务如何保障产线OEE
运维·服务器·制造
w6100104664 小时前
cka-2026-cri-dockerd
运维·k8s·cka
嵌入式小企鹅5 小时前
蓝牙学习系列(八):BLE L2CAP 协议详解
网络·学习·蓝牙·ble·协议栈·l2cap