public class MasterServer : SuperSocket.SocketBase.AppServer<MasterSession>
{ } public class MasterSession: SuperSocket.SocketBase.AppSession<MasterSession>
{
protected override void HandleUnknownRequest(StringRequestInfo requestInfo)
{
Send(Const.None);
} protected override void OnSessionStarted()
{
Console.WriteLine($"{this.RemoteEndPoint} connected, " +
$"total={this.AppServer.SessionCount}");
} protected override void OnSessionClosed(CloseReason reason)
{
Console.WriteLine($"{this.RemoteEndPoint} disconnected, " +
$"total={this.AppServer.SessionCount}");
}
} public class Master : CommandBase<MasterSession, StringRequestInfo>
{
public override void ExecuteCommand(MasterSession session, StringRequestInfo requestInfo)
{
if (requestInfo.Parameters.Length > )
{
string action = requestInfo.Parameters[];
string content = "";
if (requestInfo.Parameters.Length > )
{
content = requestInfo.Body.Trim().Substring(action.Length + );
}
if (action!=Const.ActionLogin && !session.Items.Keys.Contains(Const.User))
{
session.Send(Const.None);
return;
}
switch (action)
{
case Const.ActionLogin: Login(session, content);
break;
default: session.Send(Const.None);
break;
}
}
else
{
session.Send(Const.None);
}
} void Login(MasterSession session, string content)
{
var user = content.FromJson<DtoLogin>();
if (user.LoginName == "jonney" && user.Password == "")
{
user.IsLogined = true;
user.SessionId = Guid.NewGuid().ToString();
user.Users = new List<int>();
user.Users.Add();
}
session.Logger.Debug(user.ToJson());
if (user.IsLogined)
{
session.Items.Remove(Const.User);
session.Items.Add(Const.User, user);
}
session.Send(user.ToJson());
} }
 using System.Collections.Generic;

 namespace PublicLib
{
public class DtoBase
{
public int CurPage { get; set; }
public int TotalPages { get; set; }
} public class DtoLogin: DtoBase
{
public string LoginName { get; set; }
public string Password { get; set; } public bool IsLogined { get; set; }
public string SessionId { get; set; }
public List<int> Users { get; set; }
} public class Const
{
public const string None = "None";
public const string User = "User";
public const string ControlerMaster = "Master";
public const string ActionLogin = "Login";
}
}

supersocket作为服务器处理Pda的请求,并返回json结果,demo代码。

supersocket+controller+action的更多相关文章

  1. 尝试asp.net mvc 基于controller action 方式权限控制方案可行性

    微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...

  2. asp.net MVC中获取当前URL/Controller/Action

    一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取虚拟目录名+页面 ...

  3. Part 2 How are the URL's mapped to Controller Action Methods?

    Part 2 How are the URL's mapped to Controller Action Methods? The answer is ASP.NET Routing.Notice t ...

  4. 返璞归真 asp.net mvc (3) - Controller/Action

    原文:返璞归真 asp.net mvc (3) - Controller/Action [索引页] [源码下载] 返璞归真 asp.net mvc (3) - Controller/Action 作者 ...

  5. ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action (转载)

    ASP.NET MVC 一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [ ...

  6. 尝试asp.net mvc 基于controller action 方式权限控制方案可行性(转载)

    微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...

  7. Only one complex type allowed as argument to a web api controller action.

    错误内容: message":"An error has occurred.","exceptionMessage":"Only one c ...

  8. 找到多个与名为“xxx”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间以搜索与此请求相匹配的控制器,则会发生这种情况。

    一次在建MVC 项目的进行开发的时候,因为后来想到了一个更好的项目名称,就把 Web项目的名称重命名 改了, 然后 程序集名称,默认命名空间,都改成新的了,刚建立的项目本身也不大,运行起来,总是报 & ...

  9. 找到多个与名为“Home”的控制器匹配的类型,如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间来搜索匹配此请求的

    参考文章: http://blog.csdn.net/chengmodelong/article/details/41890229 https://www.cnblogs.com/zgqys1980/ ...

随机推荐

  1. linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...

  2. update

    update `表名` set 字段名 =replace(字段名, '查找的内容','更改的内容') where 字段名 like '%查找的内容%'; update shangpin set cli ...

  3. 识别有效的IP地址和掩码并进行分类统

    #include<iostream> #include<stdio.h> #include<string.h> using namespace std; int c ...

  4. Linux 指令

    cat cdchmod chowncp cut 名称:cat使用权限:所有使用者使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName说明:把档案串连 ...

  5. Octopus系列之一些问题的汇总

    1._WidgetCart.html中的数量更新函数和删除函数,转移到MyShoppingCart.html中出错 如果你使用的是jQuery的方式banding函数 比如change 和click, ...

  6. iOS开发多线程篇—NSOperation简单介绍

    iOS开发多线程篇—NSOperation简单介绍 一.NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现 ...

  7. terminator终端工具

    terminator是个很好的终端程序,在Ubuntu Linux下安装如下: sudo apt-get install terminator 可在同一屏打开多个窗口:

  8. mysql 中execute、executeQuery和executeUpdate之间的区别

    在用纯JSP做一个页面报警功能的时候习惯性的用executeQuery来执行SQL语句,结果执行update时就遇到问题,语句能执行,但返回结果出现问题,另外还忽略了executeUpdate的返回值 ...

  9. ACM 矩阵题目整理

    先从最基础的矩阵快速幂加速递推开始. HDU 1005 Number Sequence |f[n-2],f[n-1]|* |0 B| =|f[n-1], B*f[n-2]+A*f[n-1]|=|f[n ...

  10. HANS123

    //策略:HANS123//周期:日内//类别:趋势突破 作为外汇市场上广为流行的一种突破交易策略,HANS123以其简洁的开盘后N根K线的高低点突破,作为交易信号触发的评判标准.这也是一种入场较早的 ...