Avatar billede krab Praktikant
29. december 2001 - 13:34 Der er 20 kommentarer og
1 løsning

hvorfor denne fejl.

Hvad betyder denne fejl?

Windows socket error: (10049), on api \'connect\'

det har noget med clientsocket at gøre, men hvad, hjælp.
Avatar billede morten_s Nybegynder
29. december 2001 - 13:36 #1
Jamen den fejl tror jeg at jeg kender, du er allerede connectet prøv sådan her

while not MySocket.Connected do
  MySocket.Connect
Avatar billede ziron Nybegynder
29. december 2001 - 13:36 #2
Avatar billede ziron Nybegynder
29. december 2001 - 13:38 #3
morten_s prøv at kig på den side :)

/ZIRON
Avatar billede krab Praktikant
29. december 2001 - 13:39 #4
/ZIRON
den var faktisk ret sej den side.
Avatar billede ziron Nybegynder
29. december 2001 - 13:40 #5
hehe lidt sej er man vel altid ik :)

/ZIRON
Avatar billede krab Praktikant
29. december 2001 - 13:40 #6
Hvorfor siger den så det når jeg bruger dette.
var
i : integer;
X : integer;
ip : string;
startafIp : string;
begin
server := edit1.text;
i := 1;
X := 999;
startafip := edit1.Text;
        While (I < X) do
        begin
        i := i + 1;
        if length(server) > 0 then
        with clientsocket1 do
        begin
        host := server + inttostr(i);
        active := true;
        end;
  end;
Avatar billede morten_s Nybegynder
29. december 2001 - 13:41 #7
Ziron> har sat bogmærke på siden


Krab> den bedste måde at connecte er gennem en tråd, du kan lige få min kode til en sådan her:

unit tLogOn;

interface

uses
  Classes, Dialogs, Controls, SysUtils, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient;

type
  TStateEvent  = procedure(State : Integer) of object;
  TStatusEvent  = procedure(Status : String) of object;
  TErrorEvent  = procedure(Error : String) of object;
  TConnectEvent = procedure(ControllerConnected : Boolean) of object;
  TLogOnController = class (TThread)
  private
    FOnStateEvent : TStateEvent;
    FOnStatusEvent : TStatusEvent;
    FOnErrorEvent : TErrorEvent;
    FOnConnectEvent : TConnectEvent;
    procedure SetOnStateEvent(const Value: TStateEvent);
    procedure SetOnStatusEvent(const Value: TStatusEvent);
    procedure SetOnErrorEvent(const Value: TErrorEvent);
    procedure SetOnConnectEvent(const Value: TConnectEvent);
  protected
    procedure Execute; override;
  public
    FClientSocket : TIdTCPClient;
    IPNo : String;
    Port : Integer;
    WriteDelay : Integer;
    Constructor Create;
    Destructor Destroy; override;
    property OnStateEvent : TStateEvent read FOnStateEvent write SetOnStateEvent;
    property OnStatusEvent : TStatusEvent read FOnStatusEvent write SetOnStatusEvent;
    property OnErrorEvent : TStatusEvent read FOnStatusEvent write SetOnStatusEvent;
    property OnControllerConnectedEvent : TConnectEvent read FOnConnectEvent write SetOnConnectEvent;
  end;

implementation


var
  InStr : String;
  State : Integer;
{ TDataopsamling }

constructor TLogOnController.Create;
begin
  inherited Create(true);
  FreeOnTerminate := false;
end;


destructor TLogOnController.Destroy;
begin
  inherited;
end;

procedure TLogOnController.execute;
var
  TmpStr : String;
  //i : Integer;
begin
  inherited;
  FOnConnectEvent(False);
  FOnStateEvent(1);
  FOnStatusEvent(\'Trying to connect: Ip \'+IPNo+\':\'+IntToStr(Port));
  FClientSocket.Host := IPNo;
  FClientSocket.Port := Port;
  FClientSocket.Connect;
  if not FClientSocket.Connected then
  begin
    FOnErrorEvent(\'Could not connect to: Ip \'+IPNo+\':\'+IntToStr(Port));
    Exit;
  end;
  Sleep(WriteDelay);
  FClientSocket.Write(#27);
  FOnStateEvent(2);
  FOnStatusEvent(\'Handshaking....\');
  InStr :=  FClientSocket.ReadLn(\'> \', -2);
  FOnStateEvent(3);
  FOnStatusEvent(\'Connected to: Ip \'+IPNo+\':\'+IntToStr(Port));
  if FClientSocket.Connected then
    FOnConnectEvent(True)
  else
    FOnConnectEvent(False);
end;

procedure TLogOnController.SetOnStateEvent(const Value: TStateEvent);
begin
  FOnStateEvent := Value;
end;

procedure TLogOnController.SetOnStatusEvent(const Value: TStatusEvent);
begin
  FOnStatusEvent := Value;
end;

procedure TLogOnController.SetOnErrorEvent(const Value: TErrorEvent);
begin
  FOnErrorEvent := Value;
end;

procedure TLogOnController.SetOnConnectEvent(const Value: TConnectEvent);
begin
  FOnConnectEvent := Value;
end;

end.



Og når du kalder tråden:

begin
  if not IdTCPClient.Connected then
  begin
    With TLogOnController.Create do
    begin
      OnStateEvent := WriteState;
      OnStatusEvent := WriteStatus;
      OnErrorEvent := WriteError;
      OnControllerConnectedEvent := WriteControllerConnect;
      IPNo := \'213.237.15.207\';
      Port := 82;
      FClientSocket := IdTCPClient;
      WriteDelay := 0;
      resume;
    end;
  end else
    IdTCPClient.Disconnect;
Avatar billede morten_s Nybegynder
29. december 2001 - 13:43 #8
ja men du kan ikke have et ip nr som ender på 999

jeg tror højest du kan gå til 255
Avatar billede morten_s Nybegynder
29. december 2001 - 13:44 #9
server := edit1.text;
i := 1;
X := 999; <---------RETTES TIL 255 ELLR PRØV FØRST MED 100
startafip := edit1.Text;
        While (I < X) do


Ikke for at blande mig men hvad skal du bruge alle de connects til ?
Avatar billede ziron Nybegynder
29. december 2001 - 13:45 #10
morten_s fint med den side og jo som du siger så kan en ip kun gå til 255. og ja hvad mon han skal bruge den til :) men hvis det er til privat-net må han jo gerne :0

/ZIRON
Avatar billede morten_s Nybegynder
29. december 2001 - 14:09 #11
Jep og fejlen passer også med forkert ip no

WSAEADDRNOTAVAIL (10049) Can\'t assign requested address
Avatar billede ziron Nybegynder
29. december 2001 - 14:27 #12
ja det passer vel egentligt meget godt, sååå.

/ZIRON
Avatar billede martinlind Nybegynder
29. december 2001 - 14:40 #13
Morten >> du skal huske at skrive :

if Assigned(FOnConnectEvent) then FOnConnectEvent(False);

ellers for du accessviolation hvis du ikke har en event tilknyttet og så skulle du måske også overveje at kalde dine event\'s i en syncronize procedure da du ellers kan løbe ind i problemer hvis du laver GUI opdates i dem.

/Martin
 
Avatar billede morten_s Nybegynder
29. december 2001 - 14:43 #14
Martin> har aldrig mere end en connection, der hænger et serielt kabel ude i den anden ende
Avatar billede martinlind Nybegynder
29. december 2001 - 14:50 #15
Ja, men det er af hensyn til din tråd, du kan læse mere i online hjælpen
Avatar billede morten_s Nybegynder
29. december 2001 - 14:53 #16
Martin>> Heller et lille friskt eksempel :)
Avatar billede martinlind Nybegynder
29. december 2001 - 15:09 #17


procedure TLogOnController.DoCallOnStateEvent;
begin
  if Assigned(FOnStateEvent) then FOnStateEvent();
end;

procedure TLogOnController.execute;
begin
  ...
  ...
  Synchronize(DoCallOnStateEvent);
  ...
  ...
end;


-----------------------------

Noget i denne stil

/Martin
Avatar billede krab Praktikant
29. december 2001 - 20:21 #18
Jeg ved ikke om jeg kan bruge alt dette til noget, det kan jeg sikkert godt, men jeg kan ikke forsåt det hele, det jeg endeligt vil lave er et program der kan igennem netværk finde ud af hvilke ip der er aktive, så skal den skrive IP\'en og Computernavnet i en memo1, håber i ved hvad jeg mener, skriv det så simpelt som muligt, jeg skal nok sætte nogle flere point til, hvis det er nødvendigt.
Avatar billede ziron Nybegynder
29. december 2001 - 20:23 #19
når det er at du skal lav en ipscanner skal du ikke connecte på den måde som du gør, du bliver nød til at pinge computeren for at se om den svarer. sååå er det bare med at gå igang :)

/ZIRON
Avatar billede krab Praktikant
29. december 2001 - 20:27 #20
OKI, tak, men kan du ik give mig en lille hjælpe tråd til hvad man skal gøre, bare hvilke componenter man skal bruge.
Avatar billede martinlind Nybegynder
30. december 2001 - 13:06 #21
Ping comp.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester