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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отладка пример сканера входит в программу, отладка пример сканера входит в программ 
:(
    Опции темы
s2004
Дата 27.4.2015, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



имеется пример сканера он в интернете достаточно распространён, код внизу. Я его использовал работает, но вот что интересно выдаёт через некоторое время ошибку по адресу... 
Код

[DCC Warning] Unit23.pas(81): W1057 Implicit string cast from 'AnsiChar' to 'string' что тут неявный переход??
[DCC Warning] Unit23.pas(137): W1024 Combining signed and unsigned types - widened both operands - типы без знака?
[DCC Warning] Unit23.pas(176): W1057 Implicit string cast from 'AnsiChar' to 'string' 


код сканера
Код

unit Unit23;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Gauges, StdCtrls, Spin, Buttons, ExtCtrls, AppEvnts,winsock;

type
  TForm23 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    SpeedButton1: TSpeedButton;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    ListBox1: TListBox;
    ProgressBar1: TGauge;
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;

  TMyThread = class(TThread)
   protected
    procedure Execute; override;
  end;

  TFSocket = record
   sa: TSockAddr;
   FData: integer;
   TimeOut: integer;
  end;

const
 MAX_PORTS=500;
 Ping=5000;

var
  Form23: TForm23;
  FSocket: array [0..MAX_PORTS - 1] of TFSocket;
  FPort: WORD;
  FInfo: TWSADATA;
  FHost: integer;
  FPStart, FPEnd: WORD;
  SThread: TMyThread;
implementation

uses Unit1;

{$R *.dfm}

procedure TForm23.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
var
 pSrvEnt:pServEnt;
 sPortDescription:String;
// j : integer;
// port: array [0..41] of integer;
begin
 if (Msg.message>=FPStart+WM_USER)
                                and (Msg.message<=FPEnd+WM_USER)
 then
 if WSAGETSELECTERROR(Msg.lParam)=0
 then
  case WSAGETSELECTEVENT(msg.lParam) of
   FD_CONNECT:
      begin
    //   pSrvEnt := getservbyport(htons(port[j]),'TCP');
       pSrvEnt := getservbyport(htons(msg.message - WM_USER),'TCP');
       if Assigned (pSrvEnt) then
        sPortDescription := 'service: ' + string(pSrvEnt^.s_name)
       else
        sPortDescription := ''; 
       ListBox1.Items.Add(IntToStr(ListBox1.Count+1)+
                        ') IP: '+inet_ntoa(FSocket[0].sa.sin_addr)+'  |  '+
                        'Port: '+intToStr(Msg.message - WM_USER) + '  |  ' +
                        sPortDescription);
       Application.ProcessMessages;
      end;
  end;
 Handled:=false;
end;

procedure TForm23.FormCreate(Sender: TObject);
var
 i: integer;
begin
 if WSAStartup(MAKEWORD(2, 0), FInfo)<>0
 then Halt;
 for i:=0 to MAX_PORTS-1 do
 with FSocket[i] do
  begin
   TimeOut := 0;
   FData := Socket(AF_INET, SOCK_STREAM, 0);
   if FData = SOCKET_ERROR
   then
    begin
     WSACleanup;
     Halt;
    end;
  end;
 Application.OnMessage:=Form23.ApplicationEvents1Message;
end;

procedure TForm23.FormDestroy(Sender: TObject);
var
 i: integer;
begin
 if SThread<>nil
 then
  begin
   SThread.Terminate;
   SThread.WaitFor;
   SThread:=nil;
  end;
 for i:=0 to MAX_PORTS-1 do
  CloseSocket(FSocket[i].FData);
 WSACleanup;
end;


procedure InitSockets;
var
 i: integer;
begin
 for i:=0 to MAX_PORTS-1 do
  with FSocket[i] do
   if (FPort>=FPEnd) or (SThread.Terminated)
   then break
   else
    if GetTickCount-TimeOut>PING
    then
     begin
      sa.sin_family:=AF_INET;
      sa.sin_addr.S_addr:=FHost;
      sa.sin_port:=htons(FPort);
      //
      WSAAsyncSelect(FData, Application.Handle, WM_USER+FPort, FD_CONNECT);
      connect(FData, FSocket[i].sa, SizeOf(FSocket[i].sa));
      TimeOut:=GetTickCount;
      inc(FPort);
      Form23.Label2.Caption:='Port: '+intToStr(FPort);
      Form23.ProgressBar1.Progress:=trunc(((FPort-FPStart)*100)/(FPEnd-FPStart));
      Application.ProcessMessages;
      //
      Sleep(PING div MAX_PORTS);
     end;
end;

procedure TMyThread.Execute;
var
 i: integer;
 buf: in_addr;
begin
 FPStart:=Form23.SpinEdit1.Value;
 FPEnd:=Form23.SpinEdit2.Value;
 FHost:=inet_addr(PansiChar(AnsiString(Form23.Edit1.Text)));
 if (FPEnd<=FPStart)or (Form23.SpinEdit1.Value>65535) or
                            (Form23.SpinEdit2.Value>65535)
 then FHost:=SOCKET_ERROR;
 if FHost=SOCKET_ERROR
 then
  begin
   if not Terminated
   then SThread:=nil;
   Form23.SpeedButton1.Caption:='Запуск';
   Exit;
  end;
 buf.S_addr:=FHost;
 Form23.Edit1.Text:=inet_ntoa(buf);
 Form23.ListBox1.Clear;
 FPort:=FPStart;
 for i:=0 to MAX_PORTS-1 do
  with FSocket[i] do
   begin
    TimeOut:=0;
    FData:=Socket(AF_INET, SOCK_STREAM, 0);
   end;
 //
 while not Terminated do
  begin
   InitSockets;
   if FPort>=FPEnd
   then break;
  end;
 //
 for i:=0 to MAX_PORTS-1 do
  CloseSocket(FSocket[i].FData);
 //
 if not Terminated
 then
  begin
   SThread:=nil;
   Form23.SpeedButton1.Caption:='Start';
  end;
end;

procedure TForm23.SpeedButton1Click(Sender: TObject);
begin
 if SThread=nil
 then
  begin
   SThread:=TMyThread.Create(false);
   SpeedButton1.Caption:='Stop';
  end
 else
  begin
   SThread.Terminate;
   SThread.WaitFor;
   SThread:=nil;
   SpeedButton1.Caption:='Start';
  end;
end;

end.


Это сообщение отредактировал(а) s2004 - 27.4.2015, 17:49
PM MAIL   Вверх
s2004
Дата 3.5.2015, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



при настройке запуск студио с остановом затем goto search 004d6cde, а дальше действия, где адрес 00000278? Куда вводить?


Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  error2.jpg 196,41 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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