C#里SuperSocket库不能发现命令的原因
在使用SuperSocket
来写服务器的过程中,这是一个非常快速的开发方式,也非常好用。不过学习的曲线有点高,在使用的过程中经常会遇到各种各样的问题。
比如当下就遇到一个比较奇怪的问题,明明在项目里添加了命令,但是框架发现不了,这样就比较怪异了。
由于SuperSocket
是使用反射的机制来查找命令,并且是跨不同的程序集。
因此SuperSocket
对命令的发现有一定要求,同时要满足下面几个条件:
- 1、继承
CommandBase
类。 - 2、采用
public
声明。 - 3、在
EXE
程序集里,如果不在就需要自行添加到参数里。
app.config配置如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> <runtime> <gcServer enabled="true"/> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
到此这篇关于C#
里SuperSocket
库不能发现命令的原因的文章就介绍到这了,更多相关C# SuperSocket
库不能发现命令的原因内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
SuperSocket封装成C#类库的步骤
将SuperSocket封装成类库之后可以将其集成进各种类型的应用,而不仅仅局限于控制台应用程序了,从而应用于不同的场景.这里以TelnetServer为例说明如何进行操作. 首先,创建一个C#类库项目LibSocketServer 添加SuperSocket引用(SuperSocket.Common.dll,SuperSocket.SocketBase.dll,SuperSocket.SocketEngine.dll),添加默认的日志框架log4net.dll引用.将log4net.confi
-
C# 常用协议实现模版及FixedSizeReceiveFilter示例(SuperSocket入门)
Socket里面的协议解析是Socket通讯程序设计中最复杂的地方,如果你的应用层协议设计或实现不佳,Socket通讯中常见的粘包,分包就难以避免.SuperSocket内置了命令行格式的协议CommandLineProtocol,如果你使用了其它格式的协议,就必须自行实现自定义协议CustomProtocol.看了一篇文档之后, 你可能会觉得用 SuperSocket 来实现你的自定义协议并不简单. 为了让这件事变得更容易一些, SuperSocket 提供了一些通用的协议解析工具, 你可以用
-
C#里SuperSocket库不能发现命令的原因
在使用SuperSocket来写服务器的过程中,这是一个非常快速的开发方式,也非常好用.不过学习的曲线有点高,在使用的过程中经常会遇到各种各样的问题. 比如当下就遇到一个比较奇怪的问题,明明在项目里添加了命令,但是框架发现不了,这样就比较怪异了. 由于SuperSocket是使用反射的机制来查找命令,并且是跨不同的程序集. 因此SuperSocket对命令的发现有一定要求,同时要满足下面几个条件: 1.继承CommandBase类. 2.采用public声明. 3.在EXE程序集里,如果不在就需
-
利用Python内置库实现创建命令行应用程序
目录 介绍 解析参数 创建帮助信息 添加别名 使用相互排斥的参数 创建一个简单的搜索工具 总结 介绍 当创建一个应用程序时,通常希望能够告诉你的应用程序如何做某事.有两种流行的方法来完成这项任务,你可以让应用程序接受命令行参数,或者创建一个图形化的用户接口.有些应用程序两者都支持. 当你需要在服务器上运行你的代码时,命令行接口很有帮助.大多数服务器没有图形化界面,特别当它们是Linux服务器时.在这种情况下,即使你想运行图形用户界面,你也可能无法运行. Python 有一个叫做 argparse
-
对linux下软件(库)的更新命令详解
在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? 1.区别 pip用来安装来自PyPI(https://www.python.org/)的python所有的依赖包,并且可以选择安装任何在PyPI上已上传的先前版本的依赖包,个人认为是python相关的包和第三方包以及各种版本: apt-get可以用来安装软件.更新源.也可以用来更新自Ubuntu(https://launchpad.ne
-
用什么库写 Python 命令行程序(示例代码详解)
一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变.本文作为本次旅程的终点,希望从一个更高的视角对这些库进行横向对比,总结它们的异同点和使用场景,以期在应对不同场景时能够分析利弊,选择合适的库为己所用. 本系列文章默认使用 Python 3 作为解释器进行讲解.若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~ 二.设计理念 在讨论
-
node版本升级npm命令警告原因及解决
目录 引言 一.报错原因 二.解决办法 引言 使用 nvm 升级 node 版本,从 v12.5.0 升级到 v16.15.1,升级完成后,使用 npm 命令时总是出现警告: npm WARN config global '--global', '--local' are deprecated. Use '--location=global' instead . 一.报错原因 升级 node 版本后,npm 没有同步升级到对应版本,所以出现 WARN . 二.解决办法 将 npm 升级到最新版本
-
java在linux系统下开机启动无法使用sudo命令的原因及解决办法
操作系统:centos 5.2场景描述:我们有一个WEB工程,客户要求使用普通用户(例如chb)运行,然后在页面上有个按钮,点击之后可以关机 实现方式:1. JAVA代码: 复制代码 代码如下: public static boolean shutDownForLinux() { try { Runtime.getRuntime().exec("sudo /sbin/poweroff");
-
逐步分析MySQL从库com_insert无变化的原因
大家都知道com_insert等com_xxx参数可以用来监控数据库实例的访问量,也就是我们常说的QPS.并且基于MySQL的复制原理,所有主库执行的操作都会在从库重放一遍保证数据一致,那么主库的com_insert和从库的com_insert理论上应该是相等的.如下面显示,第二列代表主库,第三列代表从库: 复制代码 代码如下: com_select 22 1138com_update 36
-
深入浅析Python 命令行模块 Click
Click 是用 Python 写的一个第三方模块,用于快速创建命令行.我们知道,Python 内置了一个 Argparse 的标准库用于创建命令行,但使用起来有些繁琐,Click 相比于 Argparse,就好比 requests 相比于 urllib. 关于Click? 说下 Click 模块是干啥的,简单说,它就是把我们的 Python 脚本的一些函数,通过添加带有 Click 关键字的装饰器进行装饰进而将函数调用的形式转化为命令行传参的形式然后执行.听不懂也没关系,我们会一步一步来,基本
-
利用Python第三方库xlrd读取Excel中数据实例代码
目录 1. 安装 xlrd 库 2. 使用 xlrd 库 2.1 打开 Excel 工作表对象 2.2 读取单个单元格数据 2.3 读取多个单元格数据 2.3 读取所有单元格数据 附:行.列操作 3. 总结 1. 安装 xlrd 库 Python 读取 Excel 中的数据主要用到 xlrd 第三方库.xlrd 其实就是两个单词的简化拼接,我们可以把它拆开来看,xl 代表 excel, rd 代表 read, 合并起来就是 xlrd, 意思就是读 excel 的第三方库. 这种命名风格也正是我们
-
bat命令入门与高级技巧详解
目录 第一章 批处理基础 第一节 常用批处理内部命令简介 1.REM 和 :: 2.ECHO 和 @ 3.PAUSE 4.ERRORLEVEL 5.TITLE 6.COLOR 7.mode 配置系统设备 8.GOTO 和 : 9.FIND 10.START 11.assoc 和 ftype 12.pushd 和 popd 13.CALL 14.shift 15.IF 16.setlocal 与 变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSI
随机推荐
- 使用Ajax方法实现Form表单的提交及注意事项
- Vue单文件组件基础模板小结
- vue-cli如何引入bootstrap工具的方法
- C#的四种基本数据类型
- asp.net模板引擎Razor中cacheName的问题分析
- php实现和c#一致的DES加密解密实例
- C语言 二叉树的链式存储实例
- Android UI组件Spinner下拉列表详解
- JavaScript 10件让人费解的事情
- 让IE6支持min-width和max-width的方法
- jQuery垂直多级导航菜单代码分享
- DOS下查看硬盘分区该使用什么命令
- Android 测试入门篇
- 使用微信小程序开发前端【快速入门】
- MySQL命令行删除表中的一个字段
- 解决jQuery插件tipswindown与hintbox冲突
- 快速实现jQuery多级菜单效果
- 浅谈JavaScript中的属性:如何遍历属性
- JAVA面试题之Forward与Redirect的区别详解
- C# 得到某一天的起始和截止时间的代码