SuperSocket服务器架设(二):使用SuperSocket构建简单服务器

服务器效果截图:

 

客户端效果截图:

 

1.      创建控制台项目,导入SuperSocket.Common、SuperSocket.SocketBase、SuperSocket.SocketEngine并添加好引用


2.      在控制台项目中添加Config文件夹及SuperSocket提供的log4net配置文件


3.      添加using引用

using SuperSocket.Common;
using SuperSocket.SocketBase;
using SuperSocket.SocketEngine;
using SuperSocket.SocketBase.Protocol;

4.      Main方法添加代码:

            var appServer = new AppServer();

            //服务器端口
            int port = 2000;

            //设置服务监听端口
            if (!appServer.Setup(port))
            {
                Console.WriteLine("端口设置失败!");
                Console.ReadKey();
                return;
            }

            //新连接事件
            appServer.NewSessionConnected += new SessionHandler<AppSession>(NewSessionConnected);

            //收到消息事件
            appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(NewRequestReceived);

            //连接断开事件
            appServer.SessionClosed += new SessionHandler<AppSession, CloseReason>(SessionClosed);

            //启动服务
            if (!appServer.Start())
            {
                Console.WriteLine("启动服务失败!");
                Console.ReadKey();
                return;
            }

            Console.WriteLine("启动服务成功,输入exit退出!");

            while (true)
            {
                var str = Console.ReadLine();
                if (str.ToLower().Equals("exit"))
                {
                    break;
                }
            }

            Console.WriteLine();

            //停止服务
            appServer.Stop();

            Console.WriteLine("服务已停止,按任意键退出!");
            Console.ReadKey();

5.       添加事件对应方法

        static void NewSessionConnected(AppSession session)
        {
            //向对应客户端发送数据
            session.Send("Hello User!");
        }

        static void NewRequestReceived(AppSession session, StringRequestInfo requestInfo)
        {
            /**
             * requestInfo为客户端发送的指令,默认为命令行协议
             * 例:
             * 发送 ping 127.0.0.1 -n 5
             * requestInfo.Key: "ping"
             * requestInfo.Body: "127.0.0.1 -n 5"
             * requestInfo.Parameters: ["127.0.0.1","-n","5"]
             **/
            switch (requestInfo.Key.ToUpper())
            {
                case ("HELLO"):
                    session.Send("Hello World!");
                    break;

                default:
                    session.Send("未知的指令。");
                    break;
            }
        }

        static void SessionClosed(AppSession session, CloseReason reason)
        { 
            
        }

6.备注:

         (1).在SuperSocket.Base中,需要将引用中的log4net属性做如下修改:

         

         (2).客户端可以使用 telnet 地址 端口连接:

        

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值