【无标题极简版的 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秒后重试
            }
        }
    }
}
相关推荐
北京耐用通信1 小时前
三步打通数据壁垒:耐达讯自动化Ethernet/IP转CC-Link方案全解析。建议点赞收藏
运维·tcp/ip·自动化
羊村积极分子懒羊羊1 小时前
nginx的https的搭建
运维·nginx·https
moringlightyn1 小时前
进程控制(程序替换+自定义Shell)
linux·服务器·c++·笔记·c·shell·进程
像风一样自由20201 小时前
Docker 与 Docker Compose:从零开始的容器化之旅
运维·docker·容器
北珣.1 小时前
docker镜像操作
运维·docker·容器·镜像
Evan芙1 小时前
用fping编写脚本扫描10.0.0.0/24网段在线主机
linux·运维·网络·excel
故事挺秃然1 小时前
Python异步(Asyncio)(一)
服务器·网络·python
小毛驴8501 小时前
nrm test 所有源超时解决办法
linux·服务器·网络
SongYuLong的博客1 小时前
ARM Linux 交叉编译工具链(toolchain)
linux·运维·arm开发