[solved]binding socket 0.0.0.0, but cannot receive by 127.0.0.1 lazarus / 1-Linux ---------------------------------------------------------------------- rasberryrabbit · 2015-04-20 03:55 I make simple socket example app, server binded '0.0.0.0' and client send '127.0.0.1'. but server cannot received from anything '127.0.0.1' and only works with '0.0.0.0' what's I missing on this example? Server Code: [Select]procedure TMyThread.Execute; const   res = 'ok'; var   laddr : sockaddr_in;   lalen : TSocklen;   buf : array[0..10] of char;   rcv : Integer; begin   lalen:=sizeof(sockaddr_in);   while not Terminated do begin     rcv := fprecvfrom(sock,@buf[0],10,0,@laddr,@lalen);     if rcv<>-1 then begin       crti.Enter;         mOutput:='recv: '+NetAddrToStr(laddr.sin_addr)+' '+buf[0]+buf[1]+buf[2];         Synchronize(@MsgOutput);       if -1=fpsendto(sock,pchar(res),2,0,@laddr,sizeof(sockaddr_in)) then begin         mOutput:='send error';         Synchronize(@MsgOutput);       end;     end;   end; end; Client Code: [Select] sock:=fpsocket(PF_INET,SOCK_DGRAM, IPPROTO_UDP);   fillchar(addr,sizeof(sockaddr_in),0);   FpFcntl(sock, F_SetFl, O_NONBLOCK or fpfcntl(sock, F_GetFl, 0));   if GetHostByName(Edit1.Text,host) then     addr.sin_addr.s_addr:=host.Addr.s_addr     else        addr.sin_addr:=StrToHostAddr(Edit1.Text);   addr.sin_port:=htons(30000);   data:='123';   if -1=fpsendto(sock,@data[1],3,0,@addr,sizeof(sockaddr_in)) then     Memo1.Lines.Add('no send')     else begin       fpFD_ZERO(readset);       fpFD_SET(sock,readset);       buf[2]:=#0;       slen := sizeof(sockaddr_in);       if -1<>fpSelect(sock + 1, @readset, nil, nil, 2000) then begin         if -1<>fprecvfrom(sock,@buf[0],30,0,@addr,@slen) then           Memo1.Lines.Add(NetAddrToStr(addr.sin_addr)+' '+pchar(@buf[0]));       end;     end;   CloseSocket(sock); ---------------------------------------------------------------------- rasberryrabbit · 2015-04-20 08:08 It solved. Code: [Select]  if GetHostByName(Edit1.Text,host) then     addr.sin_addr.s_addr:=htonl(host.Addr.s_addr)     else        addr.sin_addr.s_addr:=htonl(StrToHostAddr(Edit1.Text).s_addr); GetHostByName and StrToHostAddr returns reverse ordered IP Address.