#include #include #include #include #include #include #include #include #include "http.h" #include "session.h" #include "seturl.h" #include "hostname.h" #include "tcpconnection.h" #include "readtcp.h" char buf[512]; int main(int argc, char **argv) { TLStartUp(); LoadOneTool(54,0x200); TCPIPStartUp(); if (TCPIPGetConnectStatus() == FALSE) { TCPIPConnect(NULL); if (toolerror()) goto exit; } Session sess = {0}; if (argc < 2) goto exit; char *url = argv[1]; enum NetDiskError result = SetURL(&sess, url, TRUE, FALSE); if (result != OPERATION_SUCCESSFUL) { printf("SetURL error %i\n", (int)result); goto exit; } unsigned long startByte = 0; if (argc > 2) { startByte = strtoul(argv[2], NULL, 0); } printf("Request:\n"); printf("=========\n"); int i; for (i = 0; sess.httpRequest[i] != '\0'; i++) { char ch = sess.httpRequest[i]; if (ch != '\r') putchar(ch); } printf("=========\n"); printf("\n"); enum NetDiskError requestResult; requestResult = DoHTTPRequest(&sess, startByte, startByte + 511); printf("RequestResult %i\n", requestResult); printf("Response code %lu\n", sess.responseCode); if (requestResult == OPERATION_SUCCESSFUL) { printf("rangeStart = %lu\n", sess.rangeStart); printf("rangeEnd = %lu\n", sess.rangeEnd); printf("totalLength = %lu\n", sess.totalLength); printf("contentLength = %lu\n", sess.contentLength); } InitReadTCP(&sess, sess.rangeEnd - sess.rangeStart + 1, buf); while (TryReadTCP(&sess) == rsWaiting) /* keep reading */ ; LongWord startTime = GetTick(); while (GetTick() - startTime < 70) /* wait */ ; printf("Request 2:\n"); requestResult = DoHTTPRequest(&sess, startByte + 512, startByte + 1023); printf("RequestResult %i\n", requestResult); printf("Response code %lu\n", sess.responseCode); if (requestResult == OPERATION_SUCCESSFUL) { printf("rangeStart = %lu\n", sess.rangeStart); printf("rangeEnd = %lu\n", sess.rangeEnd); printf("totalLength = %lu\n", sess.totalLength); printf("contentLength = %lu\n", sess.contentLength); } EndTCPConnection(&sess); exit: TCPIPShutDown(); UnloadOneTool(54); TLShutDown(); }