Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Download and save file from http server using .Net Socket

Tags:

c#

.net

sockets

Hello everybody.

I would like to know how to download and save a file to my hard drive, specifically a zip file from a HTTP server using the System.Net.Socket.Sockets class.

I know there are allot easier ways to download a file with .Net, but i would like to know how to do it with Sockets, if possible of course although I'm pretty sure it is.

I've tried a few things, nothing worked once i don't have any background experience with sockets.

Your help satisfying my curiosity is appreciated. Any question just ask. Thank you.

Note:

  • The file is a standard zip file, however i would like a way that would work with any file type.
  • The file size is different every day.
  • The file is downloaded every minute, caching of such file must be disabled to get a accurate and update file version from the server.
  • File url sample: www.somewhere.com/files/feed/list.zip
like image 332
Fábio Antunes Avatar asked Dec 17 '25 22:12

Fábio Antunes


1 Answers

You could do this directly with a .NET socket, but it would require parsing and understanding the HTTP request.

The standard way to do this would just be to use the higher level System.Net classes. For example, this can be done in two lines of code via WebClient.DownloadFile - why make life more difficult for yourself?


If you really must do this from raw sockets, it will just take a lot of work. At it's core, you can connect to port 80 (assuming http) via a TCP connection, write the correct strings to the socket, and start receiving data.

That being said, getting everything correct, and handling all of the issues required is far beyond a standard StackOverflow answer's scope. If you want to go down this road, take a look at the HTTP Protocol specifications - you'll need to implement the proper aspects of this specification.

like image 89
Reed Copsey Avatar answered Dec 19 '25 13:12

Reed Copsey