More socket help... - 17/04/03 10:41 AM
I need the socket to return the filesize of the file its going to download... How do i do that?
Thanks for any help!
Thanks for any help!
on *:SOCKREAD:sockname:{ if $sockerr { return } ; Determine if you should be reading to &bvar (the file itself) or %var (the header) if whatever { var %read sockread %read if [color:green]Content-Length: [color:blue]*[/color] iswm %read[/color] { do stuff with the [color:blue]*[/color] } .. } else { sockread &var .. } }
on *:sockread:download:{ sockread %size if (Content-Length: * iswm %size) { set %file.size $gettok(%size,2,32) } did -a update.now 2 %file.size :loop if ($sockerr > 0) return sockread &temp if (!$sockbr) return bwrite %version $+ .exe -1 &temp did -ra update.now 4 $bytes($sock(download).rcvd,m3).suf did -ra update.now 6 $dur($sock(download).to) goto loop }
on *:sockread:download:{ if $sockerr { echo -eat * Socket error: $sock(download).wserr $sock(download).wsmsg } while !$sock($sockname).mark { sockread %size if (Content-Length: * iswm %size) { set %file.size $gettok(%size,2,32) did -a update.now 2 %file.size } if !%size { sockmark $sockname $ticks | echo -sg $sock($sockname).mark } } while $sock($sockname) { sockread &temp if (!$sockbr) return bwrite %version $+ .exe -1 &temp did -ra update.now 4 $bytes($sock(download).rcvd,m3).suf did -ra update.now 6 $dur($sock(download).to) if $file(%version $+ .exe).size == %file.size { echo -eat * %version $+ .exe downloaded in $calc(($ticks - $sock($sockname).mark)*.001) secs } } }
on *:sockread:download:{ if ($sockerr) { echo -eat * Socket error: $sock(download).wserr $sock(download).wsmsg } while (!$sock($sockname).mark) { var %size sockread %size if (Content-Length: * iswm %size) { set %file.size $gettok(%size,2,32) did -a update.now 2 %file.size }
ID1 (x40)| | ID2 (x72)| |