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条)

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮