sinat_29302687 2016-06-06 15:17 采纳率: 100%
浏览 1473
已采纳

只有5个客户端的c#的网络编程

我要做一个只有5个客户端的网络编程软件,客户端用c#,服务端用c++,我不知道用什么网络模型,尤其是客户端在给服务端发不同的服务消息,服务端怎么判断并分类处理?要不要用线程啊,有不有完整的项目代码,我是新手,不大会!

  • 写回答

2条回答 默认 最新

  • 小程序员 2016-06-07 02:17
    关注
            模型选择:
            网络模型的选择需要衡量开发成本、项目的压力、业务需求等,按照你说的只有5个客户端,那么即使跑视频压力也不大,所以更多要考虑的是业务需求和开发成本。
            看你的业务需求,5个客户端是并行的还是串行的,一般来说,这种的业务都需并行的,那么久考虑下业务处理时间了,每个业务需要处理的耗时是多少,这个决定是否可以用非阻塞。
            socket按照开发成本可大致分为 1多线程---》2回调---》3完成端口
            最简单的就是直接跑跑多线程了,这种的开发周期最短,不过性能也最差,占用资源较多,第二种的是回调,这种开发较快,占用资源也比较少,基本能满足你的需求。至于完成端口这东西性能最优,开发成本也最大,如果不是要秀技术,不推荐在这个项目上用。
            判断分类处理:
            在socket通讯中,所有的操作都是根据报文标识来做对应操作的,不必纠结于怎么判断并分类处理,一般来说一条tcp的协议包含以下部分
            报头 长度 命令关键字 主体内容 校验 报尾
            根据具体的业务又可以增加或者删减部分内容,这个报文是完全由你自己定义的,而在程序中的做法是:
            1、首先受到网络数据的时候存入一个byte[]中,也就是socket缓冲区,收到数据最初是存在这里的,我们的操作也是从这个缓冲区取数据进行处理。
            2、取出数据后使用报文解析器解析报文,报文解析器是一个自定义的所有用户共用的类或方法,他的作用就是将byte[]转为协议文本,然后判断协议的完整性,(有时候会再判断协议的准确性,也就是判断校验位)然后根据报文中的命令关键字去调用对应的处理方法。
            3、在处理方法中就可以对收到的协议数据做相应的处理了,业务基本是封装在这部分的。
            这是最基本的一个报文处理过程,一般我们会根据项目情况做一些调整,调整的话上面的处理逻辑也不会更改,我比较经常用到的是命令模式和生产者消费者模式来处理报文。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图输出问题
  • ¥50 python如何用抖音这个接口输入抖音ID查询用户信息
  • ¥30 关于移动Web网页使用TinyMCE富文本编辑器上传图片后的光标定位、压缩等几个问题如何解决:
  • ¥25 activeMq在同服务器centos8下消费很慢
  • ¥20 为什么zynq CAN IP 无法进入config配置模式,XCan_SelfTest函数失效?
  • ¥15 Pycharm中程序直接运行可以但进入调试报错
  • ¥15 MATLAB动图问题
  • ¥15 有段代码不知道怎么理解,const isToken = (config.headers || {}).isToken === false
  • ¥15 我的显卡支持CUDA最高版本是12.3,这个版本也支持VS 2022 17.0这种情况下如果我想下载CUDA11.8,需要下载旧版本的VS2022吗
  • ¥15 pointnet2包安装