怎样使用ACE进行网络文件传输?
使用ACE进行网络文件传输。 这种问题,怎么回答啊。和一般的传输一样啊,建立连接,分块发文件内容。断开。这样写可以吗?
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; 没什么大的问题,但while(new_stream_.recv_n(buffer, 1024, 0)!=-1)
中不能用recv_n,因为文件的大小很有可能不是1024的整数倍,最后可以判断返回值是否为0来判断是否发送完毕。 Very thanks! 用ACE_Asynch_Transmit_File吧,超级好用,什么也不用写,把文件名参数传过去就行了。而且是异步I/O,可以和proactor结合。 ACE_Asynch_Transmit_File怎么用,烦请楼上贴代码看看 ace的example中有个test_proactor.cpp,里面有用到,很简单方便
回复 #8 wishel 的帖子
惭愧,没看明白,ACE_Asynch_Transmit_File一个类就能实现文件传输码? ACE有自带的例子,test_proactor
页:
[1]
2