Announcement

Collapse
No announcement yet.

Winsock ESockError

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Winsock ESockError

    Guten Tag,<br>ich habe ein Problem mit der winsock.pas. Mit folgenden Funktionen frage ich die IP-Adresse und den Hostname ab:

    <pre>

    function TFormPW.GetLocalIPAddress: string;
    var
    WSAData: TWSAData;
    SockAddrIn: TSockAddrIn;
    Host: PHostEnt;
    MachineName: string;
    begin

    Result := '';
    MachineName := GetLocalMachineName;

    if WSAStartup($101, WSAData) = 0 then
    begin
    Host := GetHostByName(PChar(MachineName));
    if Host<>nil then
    begin
    SockAddrIn.sin_addr.S_addr:= longint(plongint(Host^.h_addr_list^)^);
    Result := inet_ntoa(SockAddrIn.sin_addr);
    end;
    WSACleanUp;
    end;

    end;

    function TFormPW.GetLocalMachineName: string;
    var
    Size: DWord;
    MachineName: string;
    begin

    Size := MAX_COMPUTERNAME_LENGTH+1;
    SetLength(MachineName, Size);
    GetComputerName(@MachineName[1], Size);

    {Lose the final #0 and the spaces}
    SetLength(MachineName, Size);

    Result := MachineName;

    end;

    </pre>
    <br>Ich verwende D4 Pro Sp3. Meine Anwendung nutzen z.Z. ca 300 Leute. Bei allen funktioniert es, nur bei einem nicht. Dort erscheint eine ESockError Exception. Weiß jemand zufällig, was eine ESockError Exception auslöst? ESockError ist nicht zu verwechseln mit ESocketError.<br>:-) Jens Schumann

  • #2
    Hallo,

    was passiert, wenn die WinSock 2-Versionsnummer beim Aufruf von WSAStartup übergeben wird?
    <pre>
    if WSAStartup(MakeLong(2,2), WSAData) = 0 then
    </pre>
    Kann es sein, das "ESockError" aus einer Fremdkomponente stammt, die im Programm verbaut wurde? Ich würde alle Source-Verzeichnisse nach dieser Zeichenkette durchsuchen. <br>
    Eventuell ist auf diesem Rechner ein Programm installiert, das eine eigene WinSock-Version mitgebracht hat.
    &#10

    Comment

    Working...
    X