23245578 发表于 2008-7-31 11:24:36

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

使用ACE进行网络文件传输。

winston 发表于 2008-7-31 14:00:13

这种问题,怎么回答啊。和一般的传输一样啊,建立连接,分块发文件内容。断开。

23245578 发表于 2008-7-31 15:53:45

这样写可以吗?

ifstream i;
   i.open("ACE.dll");
            char buffer;
   
   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;
    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;

true 发表于 2008-7-31 17:57:30

没什么大的问题,但while(new_stream_.recv_n(buffer, 1024, 0)!=-1)
中不能用recv_n,因为文件的大小很有可能不是1024的整数倍,最后可以判断返回值是否为0来判断是否发送完毕。

23245578 发表于 2008-8-1 10:41:27

Very thanks!

wishel 发表于 2008-8-13 23:02:57

用ACE_Asynch_Transmit_File吧,超级好用,什么也不用写,把文件名参数传过去就行了。而且是异步I/O,可以和proactor结合。

stuarts 发表于 2009-6-25 15:48:03

ACE_Asynch_Transmit_File怎么用,烦请楼上贴代码看看

wishel 发表于 2009-6-26 14:26:58

ace的example中有个test_proactor.cpp,里面有用到,很简单方便

stuarts 发表于 2009-6-26 15:23:36

回复 #8 wishel 的帖子

惭愧,没看明白,ACE_Asynch_Transmit_File一个类就能实现文件传输码?

wupeter1 发表于 2009-6-26 15:44:49

ACE有自带的例子,test_proactor
页: [1] 2
查看完整版本: 怎样使用ACE进行网络文件传输?