I have an outside thermometer broadcasting temperature to my lan with address 192.168.0.255, port 8088. I am trying to receive the data on my win8.1 pc using a freepascal program below. It runs up till writeln('fpbind ',k), writes zero, and then it seems to hang, while the thermometer is broadcasting. Can anybody help me?
uses sockets;
var
S: longint;
SA: SockAddr;
k: longint;
buf: array[0..255] of char;
L: ssize_t;
len: Tsocklen;
broadcast: integer;
begin
S := fpSocket(AF_INET,SOCK_DGRAM,0);
writeln('socket ',S);
SA.sin_family := AF_INET;
SA.sin_port := htons(8088);
SA.sin_addr.s_addr := htonl(INADDR_ANY); {StrToHostAddr(''); }
broadcast := 1;
k := fpsetsockopt(S,SOL_SOCKET,SO_BROADCAST,@broadcast,sizeof(broadcast));
writeln('fpsetsockopt ',k);
k := fpBind (S, @SA, sizeof(SA));
writeln('fpbind ',k);
len := sizeof(SA);
L := fprecvfrom(S,@buf[0],255,0,@SA,@len);
write('fprecvfrom ',L); readln;
write(SocketError); readln;
end.