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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тип соединения на удаленном сервере 
V
    Опции темы
ASGDeveloper
Дата 23.8.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


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

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



Можно ли узнать тип сервиса слушающего удаленный порт?

То есть, например прога хочет соединиться с адресом 134.12.45.4 и портом 34. Можно ли узнать какой сервис случает порт (http, pop3, ftp)? Вариант с номерами портов не предлагать, так как может быть ситуация когда http-сервер слушает 90 порт.
PM MAIL   Вверх
Matematik
Дата 23.8.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Методом тыка, посылать на порт команды (http, ftp) и слущать что ответит сервер.
pop3 например сразу как законектился говорит +OK lalala
http ничего не говорит, сначало надо послать GET / HTTP/1.1+#13#10+#13#10
итд
PM MAIL WWW ICQ   Вверх
Snowy
Дата 23.8.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Большинство сервисов сразу представляются.
Например, подключаешься на FTP, а он тебе сразу строку - я ftp сервер такой-то, слухаю вас.
Могут и не представляться, но обычно говорят, кто они.
Просто подключайся и пробуй прочитать строку. По ней уже можно не только определить, что за сервис, но и какой софт там стоит.
PM MAIL   Вверх
ASGDeveloper
Дата 23.8.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


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

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



Пробую вот так:

Код

var
 WSAData: TWSAData;
 sock: TSocket;
 sBuff: array[0..255] of Char;
 addr: sockaddr_in;
begin
 WSAStartup(MakeWord(1,1), WSAData);
 sock:=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 addr.sin_family:=AF_INET;
 addr.sin_port:=htons(110);
 addr.sin_addr:=LookupName('www.kav.ru');

 connect(sock, addr, SizeOf(addr));
 //sBuff:='GET ';
 //send(sock, sBuff, 255, 0);
 recv(sock, sBuff, 255, 0);
 ShowMessage(sBuff);
 closesocket(sock);
 
 WSACleanup;
end;


Код

function LookupName(name: string): TInAddr;
var
  HostEnt: PHostEnt;
  InAddr: TInAddr;
begin
  if name[4] = '.' then
    InAddr.s_addr := inet_addr(PChar(name))
  else
  begin
     HostEnt := gethostbyname(PChar(name));
     FillChar(InAddr, SizeOf(InAddr), 0);
    if HostEnt <> nil then
    begin
        with InAddr, HostEnt^ do
      begin
        S_un_b.s_b1 := h_addr^[0];
        S_un_b.s_b2 := h_addr^[1];
        S_un_b.s_b3 := h_addr^[2];
        S_un_b.s_b4 := h_addr^[3];
      end;
    end
  end;
  Result := InAddr;
end;


Не выходит, приходит мусор. Может еще варианты есть? Или я где-то ошибся с реализацией?
PM MAIL   Вверх
ASGDeveloper
Дата 23.8.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


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

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



Все, нашел решение через NMHTTP. 
Большое спасибо Snowy и Matematik!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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