You cannot re-create a Unix socket file that was deleted.
In fact, you can create another socket file with the same path (by trying to bind() the socket file descriptor again to the same address), but any client trying to connect to it will get a "Connection refused" instead of connecting to the socket that was bound to it in the first place.
That's because Unix sockets are basically bound to inodes, not to paths. You can easily check that if your netcat supports Unix sockets:
nc -lU /tmp/old_sock &
ln -f /tmp/old_sock /tmp/new_sock; rm /tmp/old_sock
# or mv /tmp/old_sock /tmp/new_sock
echo yup | nc -U /tmp/new_sock
All your program can do is to close the old socket, create another and bind it to the same address. In order to be notified of the removal of a file, you can use
inotify(7) on Linux,
kqueue(2) on BSD, or simply do a
stat(2) periodically on the path (just like with any other file).
Notice that Linux also has "abstract" Unix sockets -- sockets which are bound to a sequence of bytes instead of any file-system object, and which are not subject to any file-style access rights and cannot be "removed" or moved to a different address.
 you can call it a "string", but beware that it can also contain NUL bytes, unlike a file-system path.