J'ai un serveur distant Music Player Daemon (MPD) fonctionnant sur une machine Linux. J'ai un client qui écoute ce flux sur une autre machine Linux.Meilleure façon de surveiller un serveur sur un port TCP
Lorsque le serveur MPD est invité à mettre en pause ou à arrêter le flux, il déconnecte tous les clients connectés sur le port TCP. Par conséquent, lorsque le serveur redémarre, les clients doivent être reconnectés manuellement.
Je veux écrire un programme qui surveillera le port TCP pour un serveur acceptant des connexions, puis redémarrer automatiquement les clients. Puis-je faire mieux que d'exécuter connect() et sleep() dans une boucle? Existe-t-il des utilitaires de ligne de commande pour cela?
Je peux exécuter le client sur la machine qui exécute le serveur MPD, si cela peut aider. Ce qui suit me dira si un processus écoute sur un port local, mais ils ne bloquent pas si un processus ne l'est pas, donc je dois toujours les enrouler en boucle.
$ sudo fixeur tcp -n 8000
8000/tcp: 9677$ sudo netstat -nlp | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 9677/mpd
Je peux essayer toute solution qui ne nécessite pas de modifier le comportement du serveur RPD.
N'est-ce pas similaire à l'utilisation de fuser ou netstat, sauf que cela peut être exécuté à partir d'une autre machine? – nagul
Oui, il peut absolument être exécuté à partir d'une autre machine. Il suffit de mettre le nom d'hôte distant à la place de localhost, bien sûr. Ce n'est pas exactement la même chose que netstat puisque le serveur ne peut être configuré que sur localhost et par conséquent rejeter les connexions distantes, par exemple. Mais pour vos besoins, c'est probablement assez proche. –