Patent ID: 7934007

Claim:
A method comprising: executing, by a server device, a multi-threaded application having at least one thread to monitor a port of the server device for received requests from a plurality of client devices; executing, by the server device, at least three request handlers to manage any of the received requests from the plurality of client devices, the at least three request handlers comprising an upload request handler, a multicast download request handler and a unicast download request handler; detecting, by the server device, that a multicast request is received from a first client device of the plurality of client devices; invoking, by the server device, the multicast download request handler in order to save session information regarding the received multicast request and create another thread of the multi-threaded application to service the received multicast request; wherein servicing the received multicast request by the another thread further comprises: transmitting the plurality of packets of data from the server device to the multiple client devices using a multicast trivial file transfer protocol (TFTP) as a TFTP-compliant flow; and applying one or more flow control techniques not defined by the multicast TFTP to the TFTP-compliant flow, wherein the flow control techniques comprise determining whether the server device has sufficient resources to satisfy the request based on a block size corresponding to the request and an available bandwidth, and sending an error packet to the first client device if the server device does not have sufficient resources to satisfy the request, wherein applying, by the server, one or more flow control techniques not defined by multicast TFTP comprise delaying a start of the transmission of the plurality of packets, wherein delaying includes if a packet is lost and a send delay is determined to be zero, the send delay of zero is set to one, and if the send delay is determined to be greater than timeout/four, the send delay is set equal to the timeout/four, wherein the send delay is doubled or the send delay is decreased by one for a number of successful packets received until the send delay reaches zero, wherein the number of successful packets received includes ten.