找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 7229|回复: 10

怎样使用ACE进行网络文件传输?

[复制链接]
发表于 2008-7-31 11:24:36 | 显示全部楼层 |阅读模式
使用ACE进行网络文件传输。
发表于 2008-7-31 14:00:13 | 显示全部楼层
这种问题,怎么回答啊。和一般的传输一样啊,建立连接,分块发文件内容。断开。
 楼主| 发表于 2008-7-31 15:53:45 | 显示全部楼层

这样写可以吗?

ifstream i;
   i.open("ACE.dll");
            char buffer[1024];
   
   while(!i.eof())
   {
         printf("发送中。。。。");
                i.read(buffer,1024);
         client_stream_.send_n(buffer,1024, 0);
   
   }
   i.close();
   if (client_stream_.close () == -1)
         ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t) %p\n","close"),-1);
接收:
   ofstream out;
    out.open("ACE1.dll");
    char buffer[1024];
    while(new_stream_.recv_n(buffer, 1024, 0)!=-1)
    {
         printf("接收中。。。");
         out.write(buffer,1024);
    }
       out.close();
       printf("接收完毕");
       if (new_stream_.close () == -1)
        ACE_ERROR ((LM_ERROR, "%p\n", "close"));
       return 0;
发表于 2008-7-31 17:57:30 | 显示全部楼层
没什么大的问题,但while(new_stream_.recv_n(buffer, 1024, 0)!=-1)
中不能用recv_n,因为文件的大小很有可能不是1024的整数倍,最后可以判断返回值是否为0来判断是否发送完毕。
 楼主| 发表于 2008-8-1 10:41:27 | 显示全部楼层
Very thanks!
发表于 2008-8-13 23:02:57 | 显示全部楼层
用ACE_Asynch_Transmit_File吧,超级好用,什么也不用写,把文件名参数传过去就行了。而且是异步I/O,可以和proactor结合。
发表于 2009-6-25 15:48:03 | 显示全部楼层
ACE_Asynch_Transmit_File怎么用,烦请楼上贴代码看看
发表于 2009-6-26 14:26:58 | 显示全部楼层
ace的example中有个test_proactor.cpp,里面有用到,很简单方便
发表于 2009-6-26 15:23:36 | 显示全部楼层

回复 #8 wishel 的帖子

惭愧,没看明白,ACE_Asynch_Transmit_File一个类就能实现文件传输码?
发表于 2009-6-26 15:44:49 | 显示全部楼层
ACE有自带的例子,test_proactor
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-26 15:06 , Processed in 0.031261 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表