服务器端的程序要实现跨平台,准备参考Apache来编写。
客户端为智能手机,平台有wince,linux,iPhone等等
应用层准备采用UDP来开发
这些都没什么问题,但是因为是采用UDP,需要加上Qos质量保证,说白了就是
1 保证数据正确性
2 控制速度避免阻塞
问题出在这里,如何实现这2个功能呢?我有2种思路
(1): 参考TCP来自己实现类似QoS的功能。
(2):当然就是实现QoS了,我目前只看到winsock有QoS的实现方法,我不知道这些函数是否能跨平台。
另外客户端是手机,这些函数好像不支持,光服务器实现QoS客户端没有QoS貌似不行吧?我对winsocks实现QoS不是很清楚。麻烦大家给点意见。
另外我的2种思路是否都可以实现我需要的2个功能,也就是他们是否是对等的?

解决方案 »

  1.   

    我感觉你的2种思路应该最终都可以满足你的需求。
    你的思路2我个人感觉好像跨平台支持的不是很好(我也不清楚,呵呵),如果用思路1的话跨平台应该没问题。
    我也没做过QoS编程,就不多言,请有经验的人来解答吧
      

  2.   

    我做的是基于TCP协议的
    改造一下还是比较简单的
    QOS没用过
      

  3.   

    首先楼主需要确定你的需求,如果仅仅是需要做到
    1. 可靠的数据传输
    2. 服务器端可以执行限速功能如果仅仅是需要做到这两点的话,大可以不必自己去实现QoS,只是为UDP增加一些传输保障和限速机制就可以,比较简单,也有很多现成的案例可以参考。如果你只是在windows平台还能稍微好些,可以直接使用微软实现的GQoS来编程,但是你有这么多跨平台的需求,实现QoS是个不太现实的事情,而且确实是需要客户端和服务器端都需要支持才可以的
      

  4.   

    如果是为了数据包可靠等,可以参考TCP的一些重传机制等来进行数据校验等,等于是把TCP的一些方法应用到UDP。QOS的话,那么就需要服务端,客户端等支持,同时最好转发的路由器等也要支持,以及相关路由协议等,这样才能比较好的实现QOS
      

  5.   

    OK 我还是要用QoS 因为必须要保证一点点带宽。。
    那么请问2个问题,就结贴。
    1   嵌入式手持设备系统 例如 wince linux  iphone 支持 QoS吗? 我看的好像wince不支持。(15分)
    2   windows下的GQoS好像只能实现RSVP的QoS,一般都用这种吗? (15分)
    3   其他平台利用什么函数来实现QoS?例如linux (50分)
      

  6.   

    http://www.codeproject.com/KB/IP/udt.aspxUDT is currently implemented using C++ and it supports Linux, Windows (2000, XP and above), and OS X. 
      

  7.   

    回答楼主的几个问题:1  嵌入式手持设备系统 例如 wince linux  iphone 支持 QoS吗? 我看的好像wince不支持。
    答:你提到的这几个操作系统,都是支持QoS的,其实QoS对于我们程序员来讲,只是一种保证网络服务质量的一种思想,一种框架,而具体如何去实现这个思想,还是需要靠我们自己编程来实现的(当然也可以直接使用别人已经编好的组件)。
     
    2  windows下的GQoS好像只能实现RSVP的QoS,一般都用这种吗?
    答:GQoS只是微软在Windows系统中对于QoS的一种理解和实现,提供了可以方便开发人员使用的编程接口,而且只能使用在Win98 - win7这一系列PC操作系统,wince是不能使用GQoS的。3  其他平台利用什么函数来实现QoS?例如linux (50分)
    答:如前面所述,QoS并非是有现成的函数,几步就可以实现的,而是利用普通的网络开发接口函数去实现自己的算法和细想,想要实现一个比较完善的QoS机制,还是非常复杂和有难度的
    你可以参考一下developerworks上的这篇文章,大体理解一下实现QoS的方式Linux 2.4.x 网络协议栈QoS模块(TC)的设计与实现
    http://www.ibm.com/developerworks/cn/linux/kernel/l-qos/
      

  8.   

    windows下的GQoS一般都用RSVP的QoS,WinCe不支持Qos