【无标题极简版的 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秒后重试
            }
        }
    }
}
相关推荐
大树8819 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠19 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质20 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz20 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工21 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
网络研究院21 小时前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智21 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest21 小时前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
shushangyun_21 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈21 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix