传文件 例子
服务器和客户端已连接上,接下来需要传文件,谁能给哥例子啊...... 站内搜索关键字“传文件”,另外建议楼主自己独立思考一下传文件的逻辑,
带着问题的去理解别人的使用方法也是很有益处的。
回复 #2 modern 的帖子
我理解的就是:服务器先连接要传的文件,然后读出文件的内容,通过缓冲区发送出去;
服务器端连接目的文件,读出缓冲区的数据,然后写入文件。
不知道对不 ?
回复 #2 modern 的帖子
不明白传文件的transmit file如何用ACE_FILE_Addr file_addr;
file_addr.set("1.txt");
ACE_FILE_IO file;
ACE_FILE_Connector file_connector;
if (file_connector.connect(file,
file_addr,
0,
ACE_Addr::sap_any,
0,
O_RDWR|O_CREAT|O_APPEND
) == -1)
{
printf("error");
}
这是连接上了,然后怎么传文件,给个例子吧。 ACE_FILE_Connector与ACE_FILE_IO函数族与网调用络没什么关系。
只是封装了文件打开关闭读写等操作。
既然你已经打开文件了,建立网络连接,读文件,发就成了呗。
回复 #5 modern 的帖子
要崩溃了............服务器端
ACE_FILE_Info fileinfo;
ACE_FILE_Addr file_addr;
file_addr.set("1.txt");
ACE_FILE_IO file;
ACE_FILE_Connector file_connector;
if (file_connector.connect(file,
file_addr,
0,
ACE_Addr::sap_any,
0,
O_RDWR|O_CREAT|O_APPEND
) == -1)
{
printf("error");
}
此时服务器端连接了1.txt,同理客户端连接2.txt
现在我想把1.txt中的内容发到2.txt中。
我想的是通过file.recv(buffer,length);send(buffer)。
然后在客户端recv(buffer);file.send(buffer,length).来实现
但是在实现的过程中出现很多错误:比如resources unavailable等。
有没有已经实现的例子我参考下....
回复 #6 psycheqiqi 的帖子
写文件正常但读文件时出现
recv:Resource temporarily unavailable
代码:
char *buf="12345";
ssize_t len = ACE_OS::strlen (buf) + 1;
if (file.send (buf, len-1) != len-1)
ACE_ERROR_RETURN ((LM_ERROR,
"%p\n",
"send"),
1);
if (file.get_info (&fileinfo) == -1)
ACE_ERROR_RETURN ((LM_ERROR,
"%p\n",
"get_info"),
1);
else
ACE_OS::printf ("fileinfo : mode = %o\nno of links = %lu\nsize = %lu\n",
(u_int) fileinfo.mode_ & 0777,
ACE_static_cast(u_long ,fileinfo.nlink_),
(u_long) fileinfo.size_);
ACE_TCHAR *readback = new ACE_TCHAR;
if (file.recv (readback, len) != len)
{
ACE_ERROR_RETURN ((LM_ERROR,
"%p\n",
"recv"),
1);
}
printf("-----");
ACE_OS::printf ("read back :%s\n",
readback);
if (file.close () == -1)
ACE_ERROR_RETURN ((LM_ERROR,
"%p\n",
"close"),
1);
回复 #7 psycheqiqi 的帖子
现在就剩下读文件的问题了。。。。。。看了examples的例子也不能读出来,
大神们,救救我吧 楼主就算不太了解ACE,
至少C++的fstream该用过吧。
C语言的库函数fopen什么的总该听说过吧。
随便拿一样用就成了,
不必什么都拘泥于一定要拿ACE去实现。
[ 本帖最后由 modern 于 2009-9-2 08:55 编辑 ]
页:
[1]