【无标题极简版的 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秒后重试
            }
        }
    }
}
相关推荐
Keano Reurink15 小时前
SEO数据管道:用Airflow搭建自动化工作流
运维·人工智能·爬虫·搜索引擎·自动化·ai编程·seo
韦胖漫谈IT15 小时前
提示词注入- 大语言模型 OWASP TOP 10系列
网络·人工智能·语言模型·大模型安全·owasp
xingyuzhisuan15 小时前
2026年GPU租用平台JupyterHub多用户环境配置
服务器·人工智能·jupyter·gpu算力
KaMeidebaby15 小时前
卡梅德生物技术快报|真核蛋白表达信号肽筛选实验全流程复盘
服务器·前端·数据库·人工智能·算法
顾凌陵15 小时前
SQL注入漏洞进阶篇
网络·sql
godspeed_lucip15 小时前
LLM和Agent——专题3: Agentic Workflow 入门(2)
网络·人工智能·python
阿杰技术16 小时前
SillyTavern(酒馆)AI聊天:本地与云服务器部署全攻略
运维·服务器
网络与设备以及操作系统学习使用者16 小时前
vi与vim在openEuler中的差异及应用
linux·运维·网络·学习·vim
2401_8685347816 小时前
30个网络工程师面试题
网络·智能路由器
专注VB编程开发20年16 小时前
python运行提速方案全解
java·linux·服务器