Not easily,
The application with the trouble is a windows service that sits behind a lighttpd server. The client app is an exe that uses the libcurl library to send the data. I'm on windows BTW.
Perhaps I could start with the http server 3 and implement a http put method, I'll see the feasibility of that.
If I got you right, you say that reading a big file and sending it to a socket - by means of ASIO - takes a lot of time. This's unreleated to any other functionality - http or win.service - and could be easily isolated and reproduced in a few lines of code...
Okay, I create an app that seems to reproduce the problem. I used cURL to upload a file to lighttpd using HTTP PUT and to the app. Both servers are running locally on my machine: Lighttpd: C:\Program Files\cURL>curl -T "c:\Workspace\_debug\sqlite3.lib" -H "Expect:" localhost:81/dav/test.bin % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 9931k 0 0 100 9931k 0 12.9M --:--:-- --:--:-- --:--:-- 13.1M Test app based on HTTP server 3 example: C:\Program Files\cURL>curl -T "c:\Workspace\_debug\sqlite3.lib" localhost:82/test.bin % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 9931k 0 0 100 9931k 0 475k 0:00:20 0:00:20 --:--:-- 479k I was running the test app on port 82 with 3 threads Now the lighttpd server is a port using cygwin, so it's probably not using I/O completion ports but winsock stuff under the covers but it still beats the pants off the example app. So I'm open to suggestions on what to change to make this work. I need to be able to transfer 4+GB files, and 479k/s is un-acceptably slow. Thanks, Daniel