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 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目
  • ¥15 利用pthon计算薄膜结构的光导纳