贝贝花花包包店,精品555皮具,钱夹,皮夹

字体:  

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

23245578 发表于: 2008-7-31 11:24 来源: ACE 开发者

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

最新回复

winston at 2008-7-31 14:00:13
这种问题,怎么回答啊。和一般的传输一样啊,建立连接,分块发文件内容。断开。
23245578 at 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;
true at 2008-7-31 17:57:30
没什么大的问题,但while(new_stream_.recv_n(buffer, 1024, 0)!=-1)
中不能用recv_n,因为文件的大小很有可能不是1024的整数倍,最后可以判断返回值是否为0来判断是否发送完毕。
23245578 at 2008-8-01 10:41:27
Very thanks!
wishel at 2008-8-13 23:02:57
用ACE_Asynch_Transmit_File吧,超级好用,什么也不用写,把文件名参数传过去就行了。而且是异步I/O,可以和proactor结合。