1) Что это? Это программка которая позволяет быстро закачивать файлы на сайт slil.ru. Писал чисто для себя, для удобства. 2) Как пользоваться? Есть 2 варианта: 1) просто запустить её и она предложит выбрать файл 2) можно кинуть её в 2000, XP, 2003 - C:\Documents and Settings\<Имя Пользователя>\SendTo\ Vista, 7 - C:\Users\<Имя Пользователя>\AppData\Roaming\Microsoft\Windows\SendTo И тогда можно выбрать файл, кликнуть по нем правой кнопкой мышки и в пункте Отправить (SendTo) выбрать пунки slil.ru 3) Какие характеристики? 1) Можно отправить тока 1 файл за раз 2) Не поддерживает прокси ( влом добавлять 3) Отображает прогрессбар, хотя на реале он почти никогда не нужен 4) компактный дизайн и возможность скопировать ссылку сразу в буфер обмена 5) макс размер файла - 50 метров (ограничение slil) 4) Техническая часть 1) написан на Си (в MS VS 2008) 2) написан полностью на WinAPI и WinSock 3) чистый размер - 7680 байт. 5) А исходники? А исходники не дам, потому что там написан отчасти быдлокод не оптимизированный ) писался после пьянки пару часов. Но по просьбе трудящихся тож выложил. P.S. Советую всё же добавить её в SendTo потому что очень удобно юзать получается, когда надо быстро чтото залить.
"Максимальный размер файла должен быть не более 50 мегабайт" Что такое "Максимальный размер" моего файла?
не, я про составляющую русского языка. Понятие "максимальный размер уже выбранного файла" является кривым.
отличная софтина, работает на ура, только на windows 7 (x86) прогрессбар сразу доходит до конца, в общем, это не очень важно
НУ с прогрессбаром везеде проблемки, потому что он показывает сколько файла была считано с винта и отправлено на сервак. Но вот винда сначало кидает данные в буфер в ядре, по этому кажется что файл отправился. такое почти на всех системах есть.
Эх,Слэш,молодец,но подобный софт+ещё возможность отправки ещё на несколько файлопомоек давно уже на Злом в "Мастерской" выложен) Вот если бы ты написал удачный загрузчик на ex.ua,вместо ихнего кривого,то да-респект!
2 slesh вот этот кусочек может стать маленькой неприятностью Code: char buf[4096]; data_size = recv(MainSocket, buf, 4096, 0); if (data_size > 0) { buf[data_size] = 0x00; } а если data_size вернет все 4096 ?
Знаю, я ж и говорю что быдлокод наскоро написанный. Если учесть что пакет вообще может быть разбитый и за один раз не считать полностью HTTP заголовок и следовательно не получить ссылку на редирект, то считай проваливается всё. И по этому нужно делать цикл. да и таймауты не повредили бы.
2 slesh немного покопался Code: typedef char page; page * alloc_page(unsigned sock) { char buff[4096], *tmp; page *p = 0; int rec, all = 0; do { rec = recv(sock, buff, sizeof(buff), 0); if (rec == -1) { free(p); return NULL; } if (rec > 0) { all += rec; tmp = realloc(p, all + 1); if (!tmp) { free(p); return NULL; } p = tmp; memmove(p + all - rec, buff, rec); p[all] = '\0'; } } while (rec > 0); return p; } void free_page(page *p) { free(p); } и в этом месте немного изменил ) Code: page *pg; wsprintfA(tmp, "\r\n--%s--\r\n", boundary); send(MainSocket, tmp, lstrlenA(tmp), 0); pg = alloc_page(MainSocket); closesocket(MainSocket); MainSocket = SOCKET_ERROR; if (pg) { /// free_page(pg); } else { error = "Ошибка связи"; } кстати у меня релиз сбилдился в 6.15 килобайт )
с неблокирующими сокетами можно проконтролировать отправку данных и венда тут не виновата. Непонятно зачем делать прогрессбар если он заведомо неверную инфу выдает? вообще, C не лучший язык для такой программы также трудно предположить зачем эта софтина нужна, файл можно залить и браузером.
2 bons в томто, и дело что браузером заливать не всегда удобно. Очень часто комуто чтото надо передать. Быстро кликнул на файле, выбрал Отправить->slil.ru и получил ссылку.
Что-то я не пойму,как вы такой вес маленький делаете. Вот у меня код: Code: #include <Windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, L"Мессадж Бокс,Прювет!11", L":(", MB_OK); return 0; } MSVC++ 2010 Release, и вес все равно 7 кб. Как,что жать,что бы уменьшить размер. УПыИКС не предлагать.