Столкнулся со странной проблемой, StrToNetAddr('192.168.0.128') приводит к ошибке 201 out of range. Юнит Sockets.
С чем может быть связано? Как избежать? Как получить sockaddr_in запись какими-то другими методами?
Менее 128 - все нормально.
Код отладочный, крайне избыточен, не ругайтесь...
- Код: Выделить всё
procedure TSkanNetThread.Execute;
var
Selfsocket: Integer;
saddr:TInetSockAddr;
WhatReturn: Integer;
FTimeOut: Integer;
begin
while (not Terminated) and (not FHostObj.FFindSuccess) do begin
FHostObj.FFindInProgress := true;
selfsocket := fpSocket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if selfsocket = -1 then
begin
//вырубать все
end else begin
FHostObj.FLFAddres := FHostObj.FLFMask + u_IntToStr(NumIp);
saddr.sin_family := AF_INET;
saddr.sin_port := htons(Word(FHostObj.FLFPort));
saddr.sin_addr.s_addr := Integer(StrToNetAddr(FHostObj.FLFAddres));//вот тут ошибка!!
WhatReturn := fpbind(selfSocket,@saddr,SizeOf(TSockAddr));
fpShutDown(selfSocket,2);
if WhatReturn <> 0 then
begin
NumIp := NumIP + 1;
if NumIp > 255 then begin
FHostObj.FFindSuccess := false;
FHostObj.SkanEnds(FHostObj.FLFAddres);
NumIp := 0;
end;
----------------------------------
Win7x64, lazarus 1.2.6 win32