UDP прием в Linux
Хочу принимать пакеты UDP без Indy. Для этого использую модули Posix.ArpaInet, Posix.SysSocket.
var
a: UInt32;
p: UInt16;
FSocket: integer;
FSocketAddr: sockaddr; //sokraddr_in нет
begin
FSocketAddr.sa_family:= AF_INET;
a:= inet_addr(PAnsiChar(AnsiString(IPaddr)));
p:= htons(Port);
FillChar(FSocketAddr.sa_data, SizeOf(FSocketAddr.sa_data), 0);
move(a, FSocketAddr.sa_data[0], SizeOf(UInt32));
move(p, FSocketAddr.sa_data[4], SizeOf(UInt16));
//заполнил структуры (скорее всего не правильно)
FSocket:= Socket(AF_INET, SOCK_DGRAM, 0);
if FSocket > 0 then begin
if Bind(FSocket, FSocketAddr, SizeOf(FSocketAddr)) = -1 then
begin
....
end;
Но bind = -1. Что я делаю не так?