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. Что я делаю не так?


Ответы (0 шт):