小弟不才,失业在家很无聊,想用C++写一个小型的网络库,同时希望能够很容易地实现跨平台,但是由于历史原因,我只对windows操作系统熟悉,其他平台一无所知,所以我的想法是用纯C++写上层,底层用设计模式中的适配器模式(Adapter model),只是提供接口,然后在具体的平台上用不同的方式来具体实现功能方面的东西,当然了,目前我只能用win32 Socket API来实现了,不知道是否可行~~~  另外我还有一点问题,就是比如win32 socket中的重叠IO或完成端口模式都需要在IO完成后通知上层进行IO处理,那么我在实现网络库的时候应该如何设计使得上层得到通知呢?关键是实现方式要通用,不能具体局限于一个平台,不知道观察者模式是否可以实现?在对非常多个客户端进行管理方面如何设计才能更加方便呢?而且在windows平台上可以用DLL来实现程序,如果要进行跨平台的话这个DLL是否通用,在linux上也存在DLL吗? 如果是TCP如何设计协议呢?
  
   ~~~~~望各位高手来讨论讨论~~
  
  还有就是如何设计能够使得系统更具开放性,以后可以不断地增加功能,以前有搞过网络库的朋友请奉献一下经验~~
  
  我也知道有个ACE网络通信库,但是太庞大了,加上马上准备考公务员,没有时间看了,等考完了一定要买本书来好好参考,对ACE有了解的朋友也可以来灌灌水啊~~~

解决方案 »

  1.   

    Winpcap就是跨平台而且是开源的,你可以看下www.winpcap.org
      

  2.   

    建议楼主,好好地为考公务员做准备吧,不要想太多.如果你对Windows以外的平台毫不了解,就去写跨平台的网络库,这几乎是不可能的.除非放弃如重叠I/O,I/O完成端口,Epoll等所谓高性能I/O模型的支持.除ACE以外还有很多网络库,比如boost::asio.如果将ACE抽离出来,只要网络I/O的部分也并不大.
      

  3.   

    WinPcap: The Windows Packet Capture Library他的主要功能是捕获数据包吧?
      

  4.   

    晕呀, 练手还可以,实用的还是不要搞了,做出来了也只能自已用,一般别人是不敢用的。
    再说跨平台的ASIO不好吗?都快成标准库了
      

  5.   

    想用C++写一个小型的网络库?????免了吧兄弟,无聊就去学习ACE就可以了,ACE够你吃的了。吃完还有TAO,还有^_^吃完再说。
      

  6.   

    娱乐和学习而已啊,现在中国的程序员真是完了,ACE不也是人写出来的吗,就算我写的不实用,但并不代表没有价值啊~~
      

  7.   

    娱乐和学习而已啊,现在中国的程序员真是完了,ACE不也是人写出来的吗,就算我写的不实用,但并不代表没有价值啊~~
    ========
    就你这态度,写得出来,那也仅仅只是一个“实现”
      

  8.   

    建议借鉴ACE,初看起来,很庞大,那是因为你看到的都是代码,而现在出的基本ACE书都是从代码实例开始的事实上如果你读几次ACE的框架代码之后,就好了,很快就把它看小