Is it possible that each machine report it's hostname to the server and that server makes it able to ping this machine by it's hostname?
Yes, of course it is possible, you just have to set up a server ;-)
In general, if you want to set up a server to do that for you, you should setup the server to provide two services, DHCP and DNS for your LAN, on the same machine. This way, every DHCP request will have to report the machine's name, and the server will keep a table of DHCP clients. Static IPs do not require DHCP, thus they will not be registered on the list of DHCP clients. This is why I alway use Reserved IP addresses rather than static ones: machines with MAC addresses in a separate list are always given, by the DHCP server, the same IP address so that they work like static addresses, except they report their names to the server.
Common programs to do this are widely available (DHCP+BIND, or DNSMasq which does both things). Some consumer routers are already setup to do this job, for instance those running DD-WRT or OpenWRT or TomatoWRT software, but most are not.
An alternative is to use WINS, Microsoft' implementation of NetBIOS Name Service, which exists inside the Samba suite also in *Nix machines, so that all you have to do is to activate it. Or you may use mdns (which Apple calls Bonjour) to do the same thing for *Nix machines. Basically, by activating these programs (programs, not protocols) on the *Nix machines, you will be able to achieve what you wish even without a central server.
pfSense