1、使用AppSession 的Send方法就可以向连接到的客户端发送数据。服务器端代码如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;//引入命名空间
using SuperSocket.Common;
using SuperSocket.SocketBase;
using SuperSocket.SocketBase.Protocol;namespace ConsoleApp1
{class Program{static void Main(string[] args){//创建一个AppServer实例var appServer = new AppServer();//安装和监听端口if (!appServer.Setup(2024)){//输出失败信息Console.WriteLine("安装和监听端口失败!");//等待用户输入Console.ReadKey();return;}Console.WriteLine("安装和监听端口成功,请输入Start开启服务器");while (!Console.ReadLine().Equals("Start")){Console.WriteLine();continue;}//启动AppServer实例if (!appServer.Start()){//输出失败信息Console.WriteLine("启动AppServer实例失败!");Console.ReadKey();return;}Console.WriteLine("服务器启动成功,请输入Stop停止服务器");// 客户端连接服务器事件appServer.NewSessionConnected += AppServer_NewSessionConnected;// 接收到客户端发送的数据appServer.NewRequestReceived += AppServer_NewRequestReceived;// 客户端关闭appServer.SessionClosed += AppServer_SessionClosed;while (!Console.ReadLine().Equals("Stop")){Console.WriteLine();continue;}appServer.Stop();Console.WriteLine("服务器已停止。");Console.ReadKey();}/// <summary>/// 客户端连接服务器事件/// </summary>/// <param name="session"></param>private static void AppServer_NewSessionConnected(AppSession session){Console.WriteLine("新客户端已连接IP地址为:" + session.RemoteEndPoint.Address.ToString());session.Send("Welcome");}/// <summary>/// 接收到客户端发送的数据/// </summary>/// <param name="session"></param>/// <param name="requestInfo"></param>private static void AppServer_NewRequestReceived(AppSession session, StringRequestInfo requestInfo){var key = requestInfo.Key;var body = requestInfo.Body;var parameters=requestInfo.Parameters;switch (key){case "1":Console.WriteLine("收到客户端信息1。");session.Send("Received:" + key.ToString());break;default:Console.WriteLine("收到key:"+key.ToString());Console.WriteLine("收到body:" + body.ToString());for (int i = 0; i < parameters.Length; i++){Console.WriteLine("收到parameters:" + parameters[i]);}session.Send("Received Key:" + key.ToString());session.Send("Received Body:" + body.ToString());for (int i = 0; i < parameters.Length; i++){session.Send("Received parameters:" + parameters[i]);}break;}}/// <summary>/// 客户端关闭/// </summary>/// <param name="session"></param>/// <param name="value"></param>private static void AppServer_SessionClosed(AppSession session, CloseReason value){Console.WriteLine("IP地址为:" + session.RemoteEndPoint.Address.ToString()+ "客户端已下线");}}
}
2、通讯效果如下图。需要注意的是2和123之间必须有一个空格。
3、客户端发送数据解析。
3.1、requestInfo.Key 是请求的命令行用空格分隔开的第一部分 。
3.2、requestInfo.Parameters 是用空格分隔开的其余部分,用空格分割开的字符串数组 。
3.3、requestInfo.Body 是出了请求头之外的所有内容,是一个字符串。
3.4、数据情况如下图。