It would not be practical for mIRC to wait until the entire file or data had been sent before triggering a sockread and then allowing you to /sockread all of the data at once - what if the incoming file or data was one gigabyte in size?

You will need to read the data from the socket as each packet comes in and /bwrite it to a file (or store it in a hash file as a binary value). Once the server has finished sending data and closes the socket connection, you can then process the contents of your file.