创建一个最简单的Tcp服务器与客户端

90 90
BeetleX
sam
sam 2024-10-05 14:05:11

概述

高性能Socket通讯,入门

服务端

采用控制台程序
代码

namespace Server
{
    //继承于 ServerHandlerBase
    //重载 SessionReceive,用于处理客户端发过来的数据
    class Program : ServerHandlerBase
    {
        private static IServer server;
        public static void Main(string[] args)
        {
            //创建服务端
            server = SocketFactory.CreateTcpServer<Program>();

            //定义服务端的端口
            server.Options.DefaultListen.Port =9090;
            //server.Options.DefaultListen.Host = "127.0.0.1";

            //打开服务器
            server.Open();

            //保持服务端一直打开
            Console.Read();
        }

        /// <summary>
        /// 重载SessionReceive
        /// </summary>
        /// <param name="server"></param>
        /// <param name="e"></param>
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            var pipeStream = e.Stream.ToPipeStream();

            //通过管道读取客户端的数据
            var value = pipeStream.ReadToEnd();

            // 这里可以进行相关的业务处理

            //将服务端需要返回给客户端的数据回传给客户端,这里使用的是读取客户端的值,直接给客户返回出去
            pipeStream.Write("服务端的值:" + value);
            pipeStream.Flush();

            //Console.WriteLine("有新的响应" + DateTime.Now.ToString());

            base.SessionReceive(server, e);
        }
    }
}

说明:

  • 使用Nuget安装Beetlx
  • 创建program 客户端程序
  • 调整Programe 继承于 ServerHandlerBase
  • 配置服务端的端口号,以及启动的时候打开网络接受程序
  • 重载 SessionReceive ,这个方法是用于与客户端交互的通道,可以得到客户端响应的内容

客户端 Client

代码

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            //向服务端进行发送数据
            var client = SocketFactory.CreateClient<AsyncTcpClient>("127.0.0.1", 9090);
            //接受服务端的方法,输出客户端的发给服务端的内容
            client.DataReceive = (o, e) => {
                var pipestream = e.Stream.ToPipeStream();
                var line = pipestream.ReadLine();
                Console.WriteLine($"{DateTime.Now} {line}");
            };

            // 客户端输入,循环读取客户输入的内容
            while (true)
            {
                Console.Write("Enter Name:");
                var line = Console.ReadLine();
                //向服务端进行发送数据
                client.Stream.ToPipeStream().WriteLine(line);
                client.Stream.Flush();
            }

        }
    }
}
  • 说明
  • Nuget安装Beetlx
  • 使用SocketFactory 来创建Client客户端 ,
  • 定义DataReceive,来获取服务端的传递过来的内容
  • 使用 client.Stream.ToPipeStream.WriteLine 写入字符串 并使用 flush来进行推送!
回帖
  • 消灭零回复
作者信息
主题分类
相关文章