Показать сообщение отдельно
Старый 14.07.2009, 10:54   #1
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
сайты о java/исходники/статьи.

Предлагаю складывать сюда описание и ссылки на интересные сайты о программировании в java.
_____
http://waper.ru/forum/56 - форум о java программировании, много всего...
http://waper.ru/forum/26 - форум с java играми.
_____
Специально для подобных сайтов написал delphi-программку автоматизированной загрузки в командной строке с возможностью работы через proxy-server.
Это позволяет создавать bat-файлы для закачки всевозможных страниц из диапазонов, например
www.site.ru/page1.thm
www.site.ru/page2.thm
www.site.ru/page3.thm
и т.д.
Существующие программки например "TeleportPro" имеют несколько другую специфику..
_____
исходный код GETHTTP:
{$APPTYPE CONSOLE}  { $R ICO.RES}
{Загрузка html-страниц через proxy из коммандной строки}
uses Windows, WinSock;
var
  proxyhost,host,page,s : string;
  proxyport,i,len : integer;

function loadToFile(const proxyhost : string;  proxyport : integer; const host, page, filename : string) : integer;
//сохранить сетевой ресурс на жесткий диск
//если работа не через proxy, то "proxyhost" должен быть равен "host", а "proxyport" - порту сервера, т.е. для http - "80"
var
  sock    : TSocket;
  wData   : WSADATA;
  addr    : sockaddr_in;
  phe     : PHostEnt;
  inAddr  : u_long;
  buf     : array [0..10240-1] of char;
  count,n : integer;
  s       : string;
  f       : file;
begin
  result := 0;
  //Инициализация сокета
  WSAStartup($0101, wData);
  // Определяем, что ввел пользователь имя хоста или его адрес
  inAddr := inet_addr(pchar(proxyhost));
  if inAddr = INADDR_NONE then
  begin
    phe := gethostbyname(pchar(proxyhost));
    if not Assigned(phe) then
    begin
      WSACleanup;
      Exit;
    end;
    inAddr := PInAddr(phe.h_addr_list^)^.s_addr;
  end;
  sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  if sock = INVALID_SOCKET then
  begin
    WSACleanup;
    Exit;
  end;
  addr.sin_family := AF_INET;
  addr.sin_port   := htons(proxyport{80});
  addr.sin_addr.s_addr := InAddr;
  n := connect(sock, addr, sizeof(addr));
  if n = SOCKET_ERROR then
  begin
    closesocket(sock);
    WSACleanup;
    Exit;
  end;
  // Составляем строку запроса и  отправляем
  s := 'GET http://'+host+'/'+page+' HTTP/1.0'#13#10+
       'Host: '+host+#13#10+
       'Accept: *.*, */*'#13#10#13#10;
  send(sock, s[1], length(s), 0);
  // принимаем ответ
  assignFile(f, filename);
  rewrite(f, 1);
  count := recv(sock, buf, sizeof(buf), 0);
  //n:=0; while not((buf[n]=#13) and (buf[n+1]=#10) and (buf[n+2]=#13) and (buf[n+3]=#10)) do inc(n);
  n := pos(#13#10#13#10, buf)+3;
  dec(count,n);
  move(buf[n], buf[0], count);  // отрезаем HTTP заголовки
  repeat
    blockWrite(f, buf, count, n);
    result := result+n;
    count := recv(sock, buf, sizeof(buf), 0);
  until count = 0;
  close(f);
  // Закрываем сокет – завершаем работу с сетью
  closesocket(sock);
  WSACleanup;
end;

begin
  if paramCount=4 then
  begin
    proxyhost:=paramStr(1);
    val(paramStr(2),proxyport,i);
    s:=paramStr(3);
    len:=length(s);
    host:='';
    i:=8;
    while (i<=len) and (s[i]<>'/') do begin host:=host+s[i]; inc(i); end;
    page:='';
    inc(i);
    while (i<=len) do begin page:=page+s[i]; inc(i); end;
    s:=paramStr(4);
    writeln(proxyhost,':',proxyport,' # '+host+'/'+page+' ==> '+s+'  [',
    loadToFile(proxyhost,proxyport,host,page,s), ' bytes]');
    //loadToFile('169.254.159.223', 8080, 'http://www.ya.ru/', '1.htm')
  end
    else writeln('http-page loader. v0.1 by arT(c). e-mail: [email protected]'#13#10+
      'usage:    gethttp proxyhost proxyport url filename'#13#10+
      'examples: gethttp www.google.ru 80 http://www.google.ru/page1/ no_proxy.htm'#13#10+
      'examples: gethttp myproxy 808 http://www.ya.ru/ proxy_host.htm'#13#10+
      'examples: gethttp 169.254.159.223 8080 http://www.mail.ru/auth/ proxy_ip.htm'#13#10);
end.
пример bat-файла:
@echo off
for /l %%i in (2,1,785) do gethttp 169.254.159.223 8080 http://waper.ru/forum/56?page=%%i %%i.htm
в архиве компилированная версия
Вложения
Тип файла: zip gethttp.zip (66.1 Кб, 514 просмотров)
(Offline)
 
Ответить с цитированием