Je travaille actuellement sur une application client qui écoute les paquets RTP sur le port 5004. Comme il peut y avoir plusieurs serveurs qui envoient des paquets RTP, je ne peux pas utiliser les sockets pour me connecter à un hôte distant spécifique. À la place, j'ai essayé ce qui suit pour écouter sur un port local :
Socket socket = new Socket("127.0.0.1", 5004);
Socket socket = new Socket("localhost", 5004);
Socket socket = new Socket(InetAddress.getByName("localhost"), 5004);
Socket socket = new Socket(InetAddress.getLocalHost(), 5004);
L'une ou l'autre des options ci-dessus me permettra de bénéficier de cette exception :
java.net.ConnectException: Connection refused: connect
J'ai également essayé d'utiliser une DatagramSocket, mais les DatagramPackets nécessitent que je spécifie la taille du paquet à lire.
En résumé, je dois trouver un moyen d'écouter sur le port local 5004 des paquets RTP de taille inconnue sans me connecter à un hôte/adresse distant(e) spécifique. Toute aide sera grandement appréciée !
EDIT :
J'ai maintenant un ServerSocket configuré pour écouter les connexions, mais je n'arrive toujours pas à lire les paquets.
try { ServerSocket server = new ServerSocket(5004);
Socket s = server.accept();
BufferedReader rtpReader = new BufferedReader(new InputStreamReader(s.getInputStream()));
while (true){
int k = rtpReader.read();
if (k == -1) break;
System.out.println(k);
}
}
Note : Les paquets RTP sont envoyés par l'intermédiaire d'une adresse multicast.
Le problème s'est avéré être le Multicast. Reportez-vous à la réponse de Nikolaï. Merci beaucoup !