Blockland Forums > Modification Help
TCPObject GET requests
Nexus:
--- Quote from: Greek2me on March 16, 2012, 11:58:57 PM ---Post your code.
--- End quote ---
--- Code: ---function Downloader::onDNSResolved(%this)
{
echo("DNS Resolved");
}
function Downloader::onDNSFailed(%this)
{
echo("DNS Failed");
}
function Downloader::onConnected(%this)
{
echo("Connected");
%req = "GET "@$file@" HTTP/1.0\r\n";
echo(%req);
%this.send(%req);
}
function Downloader::onConnectFailed(%this)
{
echo("Connection Failed");
}
function Downloader::onDisconnect(%this)
{
echo("Disconnected");
}
function Downloader::onLine(%this, %line)
{
echo("TCP: " @ %line);
if(strPos(%line,"Content-Length:") >= 0)
%this.length = getWord(%line,1);
//ONLY NEEDED IF SAVING THE FILE
if(%line $= "")
%this.setBinarySize(%this.length);
}
//ONLY NEEDED IF SAVING THE FILE
function downloader::onBinChunk(%this,%chunk)
{
echo("chunk'd");
if(%chunk < %this.length)
return;
%path = "config/server/TCP example.txt";
%this.saveBufferToFile(%path);
%this.disconnect();
}
function defaultconnect()
{
if(!isobject(Downloader))
return;
$ip = "98.227.200.17";
$file = "/shares/USB_Storage/testdoc.txt";
echo("Sending connect request to "@$ip@" for "@$file);
Downloader.connect($ip@":80");
}
if(isobject(Downloader))
Downloader.delete();
new tcpobject(Downloader);
--- End code ---
--- Code: ---==>defaultconnect();
Sending connect request to 98.227.200.17 for /shares/USB_Storage/testdoc.txt
Connected
GET /shares/USB_Storage/testdoc.txt HTTP/1.0
Disconnected
--- End code ---
I just copied and pasted the onbinchuck function out of some other coding help topic somewhere, I'm thinking it was the one ipq linked.
I also verified to make sure it was working by sending a request to forum.blockland.us and it downloaded some broken html something that ends like halfway through a line of code, but it still was called. I'll attach it in case someone cares.
There is about a five second delay between when the GET request is sent and Disconnected appears
Also I have tried like a million variations on the GET request, but this is the one that I am pretty sure Ephialtes indicates is best.
Port:
Why are you using binary content retrieval for a plain text file?
Nexus:
--- Quote from: Port on March 18, 2012, 04:02:09 AM ---Why are you using binary content retrieval for a plain text file?
--- End quote ---
No idea, what would you suggest?
Port:
--- Quote from: Nexus on March 18, 2012, 04:03:18 AM ---No idea, what would you suggest?
--- End quote ---
If you need to save the file, create a file object and open a file for writing upon connecting, write lines when recieved (make sure you don't write the header to the file) and close/delete the file object when disconnected or done receiving data. You may want to add a line "timeout" to automatically close/delete the file object in case the web server doesn't send Content-Length and doesn't disconnect you either (most web servers respect the Connection: close header though).
Nexus:
--- Quote from: Port on March 18, 2012, 04:05:51 AM ---If you need to save the file, create a file object and open a file for writing upon connecting, write lines when recieved (make sure you don't write the header to the file) and close/delete the file object when disconnected or done receiving data. You may want to add a line "timeout" to automatically close/delete the file object in case the web server doesn't send Content-Length and doesn't disconnect you either (most web servers respect the Connection: close header though).
--- End quote ---
Sounds good, but how do I detect when lines are recieved?