Je vais essayer d'être bref.Comment recevoir IP publique et Port en utilisant Stun et ice4j
Je souhaite créer une communication entre 2 applications Java (qui seront ensuite transportées vers Android) sans passer par un serveur. En tant que tel, j'ai passé des semaines à regarder autour, et après beaucoup de travail, j'ai trouvé étourdissement et ice4j. La meilleure explication sur l'utilisation de ice4j, j'ai trouvé here, et cela m'a montré ce que je devais faire pour ajouter des serveurs d'étourdissement à un agent (je ne sais pas vraiment ce qu'est un agent, juste qu'il gère mes communications avec STUN et TURN), à travers ce code:
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.ice4j.Transport;
import org.ice4j.TransportAddress;
import org.ice4j.ice.Agent;
import org.ice4j.ice.IceMediaStream;
import org.ice4j.ice.harvest.StunCandidateHarvester;
public class ice4jTesting {
public static void main(String[] args) {
Agent agent = new Agent();
String[] hostnames = new String[] {"jitsi.org", "numb.viagenie.ca", "stun.ekiga.net"};
for(String hostname: hostnames) {
try {
TransportAddress address;
address = new TransportAddress(InetAddress.getByName(hostname), 3478, Transport.UDP);
agent.addCandidateHarvester(new StunCandidateHarvester(address));
} catch (UnknownHostException ex) {
Logger.getLogger(SimpleStun.class.getName()).log(Level.SEVERE, null, ex);
}
}
IceMediaStream stream = agent.createMediaStream("audio");
int port = 5000;
try {
agent.createComponent(stream, Transport.UDP, port, port, port+100);
// The three last arguments are: preferredPort, minPort, maxPort
} catch (IllegalArgumentException | IOException ex) {
Logger.getLogger(SimpleStun.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
cependant, après le tutoriel utilise SDPUtils
, une classe qui est dans le code source de ice4j j'ai trouvé sur github, pour recevoir les informations SDP de l'agent. Cependant j'ai obtenu ice4j.jar de the central maven repository, et l'ai ajouté à mon projet régulier de netbeans (je l'ai fait parce que je ne suis pas très familier avec le maven, et je voulais juste une bibliothèque régulière sur mon projet régulier). Cette classe n'a pas la classe SDPUtils
, et comme je ne comprends pas assez ce code pour le résoudre moi-même, je me demandais si vous pouviez m'aider soit à corriger le code ci-dessus, soit à me montrer un exemple de comment pour répondre à la question sur le titre. Cependant, à moins que vous ne puissiez faire ce que j'ai dit dans la dernière phrase, ou que vous m'indiquiez un exemple de code, votre aide ne sera probablement pas utile, car je suis mentalement incapable de comprendre la théorie derrière cela complètement à cause de les nombreux concepts que je ne connais pas.
J'ai jusqu'à la fin de cette semaine pour comprendre cela, et si je ne le fais pas, je suis assez foutu. Alors s'il vous plaît, si vous pouvez ou connaissez quelqu'un qui peut vous aider, je l'apprécierais énormément.
Merci d'avoir lu jusqu'à présent et essayer d'aider :)
Merci pour le réalisation de tumbleweed les gars ... – RaKXeR