st_asio_wrapper是一组对boost.asio的包装类库。
教程共四篇,第一篇地址为:
http://blog.csdn.net/yang79tao/article/details/7724514
源代码及demo代码下载地址为:
http://download.csdn.net/detail/yang79tao/4581486文件传输是我基于st_asio_wrapper而实现的(当成使用st_asio_wrapper的demo,总代码不超过500行),在资源里面的file_server和file_client目录下面,多线程分块文件传送,附带简单聊天功能。服务端直接启动,客户端启动支持一个连接数量作为参数,比如:./file_client 5表示文件分5块下载。
传输由客户端发起,命令:
get file_name1 file_name2 ...
除此之外的任何输入,当成聊天。关于编译的要求,跟之前的demo完全一样,因为这些要求都是st_asio_wrapper的要求,具体需要看教程。

解决方案 »

  1.   

    谢谢,一直没有涉足boost
      

  2.   

    突然想到,有个限制没有说,在32位下,这套文件传输系统只支持小于2G的文件,虽然我打开文件,定位文件都用的是int64类型,但有一个地方还有问题,就是使用st_timer的时候,它只支持const void*数据类型,在文件传输服务端,有一个地方将int64强转成了vonst void*,这显然在32位系统下,被折断了。所以在32位系统之前,只支持小于2G的文件,而且还得是小端系统。
    我会在下一版本里面修正这个缺陷。
    等不及的可以向我索取代码。
      

  3.   

    要解决上面的问题,请如下修改:
    switch (id)
    {
    case 10:
    read_file_hanlder(*reinterpret_cast<const __off64_t*>(user_data)); //modify
    delete reinterpret_cast<const __off64_t*>(user_data); //add
    break;
    default:
    return server_socket::on_timer(id, user_data);
    break;
    }//network IO slower than disk IO, wait for a moment
    if (!send_msg(buffer, read_size + ORDER_LEN))
    {
    fseeko64(file, -(__off64_t) read_size, SEEK_CUR);
    set_timer(10, 50, new __off64_t(length)); //modify
    }
      

  4.   

    不支持vc2008绝对是个巨大的失误,vc2010下编译出来的程序无法运行在winxp以下的操作系统上运行,这于现阶段中国国情不符。如果仅仅因为这一点导致这个库无法推广就太可惜了!
      

  5.   

    国庆有版本更新,增加了一个压力测试客户端基(st_test_client)类,并且基于这个基类写了一个测试服务端性能的demo。
    另外,准备通过预编译,至少支持到vc2010,并提供我编译的boost库,以方便不想编译boost库的人。
      

  6.   

    最新2.3版本已经发布:
    http://download.csdn.net/detail/yang79tao/4622256去掉了原来过度使用的智能指针;
    增加了一个专门用于对服务端压力测试的客户端框架st_test_client,并基于它写了一个压力测试客户端当成是demo;
    增加了对vc2010的支持;
      

  7.   

    老师你好啊, 帮忙解答个网络模型的问题啊,  谢啦
    http://topic.csdn.net/u/20121007/12/053ab52a-4e2b-40bd-b9bb-339c6cf794ca.html?seed=1518361400&r=79826611#r_79826611
      

  8.   

    最新2.4版,下载地址:
    http://st-asio-wrapper.googlecode.com/svn/trunk/
      

  9.   

    2.5版已经发布,支持vc2008,如果还需要在更低的vc中使用,可能还需要修改很少一些地方,但已经几乎没有难度了,因为vc2008及其以前的vc,都不支持c++0x。位置在st_asio_wrapper/compatible_edition目录下面(与普通版本分开发布),接口有小修改(都是消息相关的,比如on_msg等),因为为了达到与move相当的效率,采用了智能指针。下载地址:
    svn checkout http://st-asio-wrapper.googlecode.com/svn/trunk/ st-asio-wrapper-read-only注:上面的是命令行,如果你在图形界面,则只需要输入http://st-asio-wrapper.googlecode.com/svn/trunk/这个地址即可。