
Sorry to bother boost-users with a really dumb problem.
It turns out I was running the server and client from the same directory, so one was trying to read from the file while the other was trying to write to it.
Thanks to those who replied~
--- On Thu, 8/18/11, Andrew Yancy
From: Andrew Yancy
Subject: Re: [Boost-users] Why is asio clobbering my file before it can be sent? To: boost-users@lists.boost.org Date: Thursday, August 18, 2011, 7:27 AM Yes, tellg() was just saying that I had reset the file location pointer, sorry about that. However, when I pause using a scanf statement, I can see that the file's contents have disappeared by just looking in the windows file browser (see the updated code below). Anyone know why that would happen? Thanks again~ I've used the same boilerplate boost::asio code for years to send a plain text file "foo.txt" from a server back to a client and it has always worked fine. Suddenly for no apparent reason, the same code I've always used with no problems now deletes the contents of foo.txt before it can actually be sent to the client. I'm creating foo.txt with a different program now, but I don't see how that could make any difference on Win32.
Below is the relevant part of the code just before I use boost::asio::write to send the contents of foo.txt back to the client. The contents of the file are somehow lost when the file name and size are sent to the client. Anyone know what's going on? Is there any other information I can provide to shed light on the problem? Thanks very much for any help~
int bar; std::ifstream source_file("foo.txt", std::ios_base::binary | std::ios_base::ate); if (!source_file) return __LINE__; size_t file_size = source_file.tellg(); source_file.seekg(0);
scanf("%d", &bar); //foo.txt is OK here
boost::asio::streambuf request; std::ostream request_stream(&request); request_stream << return_fn << "\n" << file_size << "\n\n"; boost::asio::write(socket, request);
scanf("%d", &bar); //foo.txt exists but has size 0 now
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users