【无标题极简版的 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秒后重试
            }
        }
    }
}
相关推荐
@insist12325 分钟前
系统集成项目管理工程师-信息和文档管理
网络·数据库·软考·系统集成项目管理工程师·软考中项·软件水平考试
极客互动API28 分钟前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
QH1392923188042 分钟前
Keysight N5183B N5183B 微波模拟信号发生器
网络·单片机·嵌入式硬件·集成测试·信息与通信
weipt1 小时前
从ollama到llama.cpp
linux·服务器·llama
LabVIEW开发1 小时前
基于原始套接字实现LabVIEW网络Ping检测的编程方法
网络·labview·labview知识·labview功能·labview程序
东莞和裕包装1 小时前
如何管控广州定制纸箱生产中的啤切精度与印刷色差质量问题
大数据·运维·网络·人工智能
s_w.h1 小时前
【 计网 】计算机网络基础
服务器·计算机网络
小飞侠在吗2 小时前
Windows 下 Nginx 访问 127.0.0.1 报 50x 错误:根因是路径里 \t 被当成 Tab
运维·windows·nginx
Zguigo2 小时前
lesson19-23计算机网络数据链路层完全指南:从帧封装到滑动窗口协议
网络·计算机网络
九硕智慧建筑一体化厂家3 小时前
楼宇自控|智慧建筑核心引擎!楼宇自控系统,赋能建筑高效低碳运维
运维·人工智能·笔记·智慧城市