ACE 开发者
文章
日志
文件
圈子
论坛
业内新闻
意见建议
求职招聘
.Net技术
项目管理经验交流
常用工具
IBM Rational
敏捷技术
数据库
中间件
P2P技术
服务器端程序开发
Tcp/IP和Socket
C++学习
开发心得和读书笔记
ACE综合应用
ACE基础应用
海阔天空
您的位置:
ACE 开发者
>>
论坛
>>
ACE基础应用
>>
查看帖子
字体:
小
中
大
怎样使用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结合。
查看全部回复
我也来说两句
最新更新主题
求ACE编写的通信程序,要求是传一个数据...
使用Proactor模式不能接收超过168个字...
linux调试ACE遇到的一个问题
关于ACE_Proactor的两个问题
ACE链接问题
linux 配置ACE的问题
VC下创建ACE_Select_Reactor出错
修正错误
求助
Proactor如何获得链接的地址?...
月度关注热点
VC下创建ACE_Select_Reactor出错
linux 配置ACE的问题
关于select_reactor的问题
register_handler的问题
ACE内存管理
修正错误
关于ACE_Proactor的两个问题
Proactor如何获得链接的地址?...
ACE_Hash_Map_Manager的open
关于ACE Reactor服务器
最新回复
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;
中不能用recv_n,因为文件的大小很有可能不是1024的整数倍,最后可以判断返回值是否为0来判断是否发送完毕。