Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Whois через Winsock 
:(
    Опции темы
MaXL
Дата 22.3.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Как сделать? smile


--------------------
MaXL
PM MAIL   Вверх
MaXL
Дата 22.3.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Ну я имею ввиду нужно послать серверу команду...какую? как её обработать, плиз если есть у кого пример киньте оч. срочно нужно.


--------------------
MaXL
PM MAIL   Вверх
Matematik
Дата 22.3.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



См. как в Indy сделано

Код

  Connect; try
    WriteLn(ADomain);
    Result := AllData;
  finally Disconnect; end;


Понятно?
PM MAIL WWW ICQ   Вверх
MaXL
Дата 23.3.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Если чесно то не очень smile


--------------------
MaXL
PM MAIL   Вверх
Digitalator
Дата 25.3.2006, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



протокол Whois
http://rfc.net/rfc3912.html

сразу после коннекта посылаем серверу строку запроса, завершающуюся символами #13 #10
далее читаем все что присылает сервер, до тех пока он не закроет соединение.

PM MAIL   Вверх
MaXL
Дата 25.3.2006, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Спасибо сёдня попробую smile


--------------------
MaXL
PM MAIL   Вверх
S.A.P.
Дата 25.3.2006, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 1
Всего: 71



Не знаю как в Делфи, но могу кое - чем поделиться.
Для того, чтобы получить какую - либо информацию о домене тебе необходимо определить, на каком whois сервере он числится (их много), например для зоны ru обычно это whois.ripn.net.

Едем дальше... Чтобы получить информацию о домене, тебе необходимо приконнектиться к нужному whois серверу по 43 порту и отправить туда строку, например 'vingrad.ru\n' (перевод строки). Дальше уже читаешь ответ, для каждого whois сервера он специфичен.

Могу кинуть список whios серверов, но он у меня устаревший, поэтому попробуй поискать более новый в инете.
PM MAIL   Вверх
MaXL
Дата 25.3.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Если можешь кидай, свой список, я по нему проверю если чо старые выкину.


--------------------
MaXL
PM MAIL   Вверх
S.A.P.
Дата 26.3.2006, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 1
Всего: 71



Собственно вот обещанный список
Код

com => whois.internic.net
net => whois.internic.net
org => whois.internic.net
info => info.whois-servers.net
biz => biz.whois-servers.net
co.uk => whois.nic.uk
org.uk => whois.nic.uk
ltd.uk => whois.nic.uk
plc.uk => whois.nic.uk
edu => whois.internic.net
mil => whois.internic.net
br.com => whois.centralnic.com
cn.com => whois.centralnic.com
eu.com => whois.centralnic.com
hu.com => whois.centralnic.com
no.com => whois.centralnic.com
qc.com => whois.centralnic.com
sa.com => whois.centralnic.com
se.com => whois.centralnic.com
se.net => whois.centralnic.com
us.com => whois.centralnic.com
uy.com => whois.centralnic.com
za.com => whois.centralnic.com
ac => whois.ripe.net
ac.ac => whois.ripe.net
co.ac => whois.ripe.net
gv.ac => whois.ripe.net
or.ac => whois.ripe.net
af => whois.netnames.net
am => whois.nic.am
as => whois.nic.as
at => whois.nic.at
ac.at => whois.nic.at
co.at => whois.nic.at
gv.at => whois.nic.at
or.at => whois.nic.at
asn.au => whois.aunic.net
com.au => whois.aunic.net
edu.au => whois.aunic.net
org.au => whois.aunic.net
net.au => whois.aunic.net
be => whois.ripe.net
ac.be => whois.ripe.net
br => whois.nic.br
adm.br => whois.nic.br
adv.br => whois.nic.br
am.br => whois.nic.br
arq.br => whois.nic.br
art.br => whois.nic.br
bio.br => whois.nic.br
cng.br => whois.nic.br
cnt.br => whois.nic.br
com.br => whois.nic.br
ecn.br => whois.nic.br
eng.br => whois.nic.br
esp.br => whois.nic.br
etc.br => whois.nic.br
eti.br => whois.nic.br
fm.br => whois.nic.br
fot.br => whois.nic.br
fst.br => whois.nic.br
g12.br => whois.nic.br
gov.br => whois.nic.br
ind.br => whois.nic.br
inf.br => whois.nic.br
jor.br => whois.nic.br
lel.br => whois.nic.br
med.br => whois.nic.br
mil.br => whois.nic.br
net.br => whois.nic.br
nom.br => whois.nic.br
ntr.br => whois.nic.br
odo.br => whois.nic.br
org.br => whois.nic.br
ppg.br => whois.nic.br
pro.br => whois.nic.br
psc.br => whois.nic.br
psi.br => whois.nic.br
rec.br => whois.nic.br
slg.br => whois.nic.br
tmp.br => whois.nic.br
tur.br => whois.nic.br
tv.br => whois.nic.br
vet.br => whois.nic.br
zlg.br => whois.nic.br
ca => whois.cdnnet.ca
ab.ca => whois.cdnnet.ca
bc.ca => whois.cdnnet.ca
mb.ca => whois.cdnnet.ca
nb.ca => whois.cdnnet.ca
nf.ca => whois.cdnnet.ca
ns.ca        => whois.cdnnet.ca
nt.ca => whois.cdnnet.ca
on.ca => whois.cdnnet.ca
pe.ca => whois.cdnnet.ca
qc.ca        => whois.cdnnet.ca
sk.ca => whois.cdnnet.ca
yk.ca => whois.cdnnet.ca
cc => whois.nic.cc
ac.cn => whois.cnnic.cn
com.cn => whois.cnnic.cn
edu.cn => whois.cnnic.cn
gov.cn => whois.cnnic.cn
net.cn => whois.cnnic.cn
org.cn => whois.cnnic.cn
bj.cn => whois.cnnic.cn
sh.cn => whois.cnnic.cn
tj.cn => whois.cnnic.cn
cq.cn => whois.cnnic.cn
he.cn => whois.cnnic.cn
nm.cn => whois.cnnic.cn
ln.cn => whois.cnnic.cn
jl.cn => whois.cnnic.cn
hl.cn => whois.cnnic.cn
js.cn => whois.cnnic.cn
zj.cn => whois.cnnic.cn
ah.cn => whois.cnnic.cn
hb.cn => whois.cnnic.cn
hn.cn => whois.cnnic.cn
gd.cn => whois.cnnic.cn
gx.cn => whois.cnnic.cn
hi.cn => whois.cnnic.cn
sc.cn => whois.cnnic.cn
gz.cn => whois.cnnic.cn
yn.cn => whois.cnnic.cn
xz.cn => whois.cnnic.cn
sn.cn => whois.cnnic.cn
gs.cn => whois.cnnic.cn
qh.cn => whois.cnnic.cn
nx.cn => whois.cnnic.cn
xj.cn => whois.cnnic.cn
tw.cn => whois.cnnic.cn
hk.cn => whois.cnnic.cn
mo.cn => whois.cnnic.cn
cx => whois.cx.net
cz => whois.ripe.net
de => whois.nic.de
dk => whois.ripe.net
fo => whois.ripe.net
com.ec => whois.lac.net
org.ec => whois.lac.net
net.ec => whois.lac.net
mil.ec => whois.lac.net
fin.ec => whois.lac.net
med.ec => whois.lac.net
gov.ec => whois.lac.net
fr => whois.nic.fr
tm.fr => whois.nic.fr
com.fr => whois.nic.fr
asso.fr => whois.nic.fr
presse.fr => whois.nic.fr
gf => whois.nplus.gf
gs => whois.adamsnames.tc
co.il => whois.ripe.net
org.il => whois.ripe.net
net.il => whois.ripe.net
ac.il => whois.ripe.net
k12.il => whois.ripe.net
gov.il => whois.ripe.net
muni.il => whois.ripe.net
ac.in => whois.iisc.ernet.in
co.in => whois.iisc.ernet.in
ernet.in => whois.iisc.ernet.in
gov.in => whois.iisc.ernet.in
net.in => whois.iisc.ernet.in
res.in => whois.iisc.ernet.in
is => whois.ripe.net
it => whois.ripe.net
ac.jp => whois.nic.ad.jp
co.jp => whois.nic.ad.jp
go.jp => whois.nic.ad.jp
or.jp => whois.nic.ad.jp
ne.jp => whois.nic.ad.jp
ac.kr => whois.nic.or.kr
co.kr => whois.nic.or.kr
go.kr => whois.nic.or.kr
ne.kr => whois.nic.or.kr
nm.kr => whois.nic.or.kr
or.kr => whois.nic.or.kr
re.kr => whois.nic.or.kr
li => whois.nic.li
lt => whois.ripe.net
lu => whois.ripe.net
asso.mc => whois.ripe.net
tm.mc => whois.ripe.net
com.mm => whois.nic.mm
org.mm => whois.nic.mm
net.mm => whois.nic.mm
edu.mm => whois.nic.mm
gov.mm => whois.nic.mm
ms => whois.adamsnames.tc
mx => whois.nic.mx
com.mx => whois.nic.mx
org.mx => whois.nic.mx
net.mx => whois.nic.mx
edu.mx => whois.nic.mx
gov.mx => whois.nic.mx
nl => whois.domain-registry.nl
no => whois.norid.no
nu => whois.nic.nu
pl => whois.ripe.net
com.pl => whois.ripe.net
net.pl => whois.ripe.net
org.pl => whois.ripe.net
pt => whois.ripe.net
com.ro => whois.ripe.net
org.ro => whois.ripe.net
store.ro => whois.ripe.net
tm.ro => whois.ripe.net
firm.ro => whois.ripe.net
www.ro => whois.ripe.net
arts.ro => whois.ripe.net
rec.ro => whois.ripe.net
info.ro => whois.ripe.net
nom.ro => whois.ripe.net
nt.ro => whois.ripe.net
ru => whois.ripn.net
com.ru => whois.ripn.net
net.ru => whois.ripn.net
org.ru => whois.ripn.net
se => whois.nic-se.se
si => whois.arnes.si
com.sg => whois.nic.net.sg
org.sg => whois.nic.net.sg
net.sg => whois.nic.net.sg
gov.sg => whois.nic.net.sg
sk => whois.ripe.net
st => whois.nic.st
tc => whois.adamsnames.tc
tf => whois.adamsnames.tc
ac.th => whois.thnic.net
co.th => whois.thnic.net
go.th => whois.thnic.net
mi.th => whois.thnic.net
net.th => whois.thnic.net
or.th => whois.thnic.net
tj => whois.nic.tj
tm => whois.nic.tm
to => monarch.tonic.to
bbs.tr => whois.metu.edu.tr
com.tr => whois.metu.edu.tr
edu.tr => whois.metu.edu.tr
gov.tr => whois.metu.edu.tr
k12.tr => whois.metu.edu.tr
mil.tr => whois.metu.edu.tr
net.tr => whois.metu.edu.tr
org.tr => whois.metu.edu.tr
com.tw => whois.twnic.net
org.tw => whois.twnic.net
net.tw => whois.twnic.net
ac.uk => whois.ja.net
uk.co => whois.uk.co
uk.com => whois.nomination.net
uk.net => whois.nomination.net
gb.com => whois.nomination.net
gb.net => whois.nomination.net
vg => whois.adamsnames.tc
ac.za => whois.co.za
alt.za => whois.co.za
co.za => whois.co.za
edu.za => whois.co.za
gov.za => whois.co.za
mil.za => whois.co.za
net.za => whois.co.za
ngo.za => whois.co.za
nom.za => whois.co.za
org.za => whois.co.za
school.za => whois.co.za
tm.za => whois.co.za
web.za => whois.co.za
sh => whois.nic.sh
kz => whois.domain.kz

PM MAIL   Вверх
MaXL
Дата 21.4.2006, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Не получаетсяя сделать перевод строки
я делаю так:
 
Код

lstrcpy(str,PChar('kaspersky.ru'+#13#10));

ещё пробовал так:
Код

lstrcpy(str,PChar('kaspersky.ru'+#13#10#0));

сервер мне шлёт 
Код

Пошло
% By submitting a query to RIPN's Whois Service
% you agree to abide by the following terms of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian) 
% http://www.ripn.net/about/en/servpol.html#3.2 (in English).
-----------------------------------
No entries found for the selected source(s).

Last updated on 2006.04.21 07:50:39 MSK/MSD

 of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian) 
% http://www.ripn.net/about/en/servpol.html#3.2 (in English).

хотя, если на этом сервере делать whois через браузер(ну тип на их сайт и там набирать), то всё прекрасно выдаёт инфу, что делать? 


--------------------
MaXL
PM MAIL   Вверх
Rouse_
Дата 21.4.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 5
Всего: 29



Код

////////////////////////////////////////////////////////////////////////////////
//
//  ****************************************************************************
//  * Project Name : WhoIs
//  * Unit Name    : uMain
//  * Purpose      : Демонстрационный пример получения информации с WhoIs сервера.
//  * Author       : Александр (Rouse_) Багель
//  * Version      : 1.00
//  ****************************************************************************
//
//  Особая благодарность TrefptYc и группе Машина Времени,
//  за оказанную моральную поддержку, в процессе написания данного примера :)
//

unit uMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Winsock, XPMan;

type
  TfrmMain = class(TForm)
    edServer: TLabeledEdit;
    edRecipient: TLabeledEdit;
    GroupBox1: TGroupBox;
    memReport: TMemo;
    Button1: TButton;
    XPManifest1: TXPManifest;
    procedure Button1Click(Sender: TObject);
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

function WhoIs(Server, Query: String; Timeout: Integer;
  var Response: TStringList): Boolean;
const
  MAXBLOCKSIZE = 1024;
var
  WSAData: TWSAData;
  hSocket: TSocket;
  Addr_in: sockaddr_in;
  Host: PHostEnt;
  InAddr, NoBlock: u_long;
  FDSet: TFDSet;
  Time: timeval;
  Buff: array [0..MAXBLOCKSIZE - 1] of Char;
  RecvCount: Integer;
begin
  // инициализируем WinSock
  Result := WSAStartup(MakeWord(1, 0), WSAData) = NOERROR;
  if not Result then Exit;
  try
    // создаем сокет
    hSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if hSocket = INVALID_SOCKET then
    begin
      Result := False;
      Exit;
    end;
    try
      // Определяем, что ввел пользователь имя хоста или его адрес
      InAddr := inet_addr(PChar(Server));
      if InAddr = INADDR_NONE then
      begin
        Host := gethostbyname(PChar(Server));
        if not Assigned(Host) then
        begin
          Result := False;
          Exit;
        end;
        InAddr := PInAddr(Host.h_addr_list^)^.S_addr;
      end;
      // Подготавливаем структуру для соединения
      FillChar(Addr_in, SizeOf(sockaddr_in), 0);
      Addr_in.sin_addr.S_addr := InAddr;
      Addr_in.sin_family:= AF_INET;
      Addr_in.sin_port := htons(IPPORT_WHOIS);
      // Устанавливаем интервалы таймаута
      setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO, @Timeout, SizeOf(Integer));
      setsockopt(hSocket, SOL_SOCKET, SO_SNDTIMEO, @Timeout, SizeOf(Integer));
      // Соединение с сервером - довольно долгий процесс, поэтому мы поступим по
      // хитрому - а именно переводим сокет в неблокирующий режим
      NoBlock := 1;
      ioctlsocket(hSocket, FIONBIO, NoBlock);
      // соединяемся
      if connect(hSocket, Addr_in, SizeOf(sockaddr_in)) = SOCKET_ERROR then
        case WSAGetLastError of
          // Обычно при неблокирующем соединении выдается вот эта ошибка
          // на попытку соединения, поэтому мы будем ждать окончания
          // соединения через select
          WSAEWOULDBLOCK:
          begin
            FD_ZERO(FDSet);
            FD_SET(hSocket, FDSet);
            Time.tv_sec := Timeout div 1000;
            Time.tv_usec := Timeout;
            if select(0, nil, @FDSet, nil, @Time) <> 1 then
            begin
              Result := False;
              Exit;
            end;
          end;
        else
          begin
            Result := False;
            Exit;
          end;
        end;
      // Соединились - теперь неблокирующий режим нам не нужен
      // Возвращаем все как было
      NoBlock := 0;
      ioctlsocket(hSocket, FIONBIO, NoBlock);
      // Обязательно проверяем чтобы в конце запроса стояло #13#10
      Query := Query + sLineBreak;
      // И отправляем запрос серверу
      if Send(hSocket, Query[1], Length(Query), 0) = SOCKET_ERROR then
      begin
        Result := False;
        Exit;
      end;
      // Запрос отправлен - начинаем читать данные пока не кончатся
      RecvCount := 1;
      while RecvCount > 0 do
      begin
        RecvCount := recv(hSocket, Buff, MAXBLOCKSIZE, 0);
        Response.Text := Response.Text + String(Buff);
      end;
    finally
      // Завершаем установленную сессию
      shutdown(hSocket, SD_BOTH);
      // Закрываем сокет
      closesocket(hSocket);
    end;
  finally
    // Деинициализируем WinSock
    WSACleanup;
  end;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
var
  S: TStringList;
begin
  S := TStringList.Create;
  try
    // edServer.Text = whois.internic.net
    // edRecipient.Text = borland.com
    WhoIs(edServer.Text, edRecipient.Text, 10000, S);
    memReport.Lines.Assign(S);
  finally
    S.Free;
  end;
end;

end.


Целиком забирай тут: http://rouse.front.ru/whois.zip 


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
MaXL
Дата 23.4.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Спасибо, теперь разобрался, и мой пример тоже заработалд, только он чуть попроще  smile  


--------------------
MaXL
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.