[Réseau] "cannot assign requested address" sur ma propre IP
Plop à tous :)
Alors voilà, je cherche à établir un serveur monothread sur ma machine grâce aux (Server)SocketChannels. Sauf que, lorsque je bind le ServerSocketChannel instancié, le débogueur m'insulte... assez inintelligiblement.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| java.net.BindException: Cannot assign requested address: bind
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
at net.evenkoryis.technics.ServThread.<init>(ServThread.java:31)
at net.evenkoryis.technics.MpServ.<init>(MpServ.java:6)
at net.evenkoryis.main.Main.mpMenu(Main.java:88)
at net.evenkoryis.main.Main.mainMenu(Main.java:46)
at net.evenkoryis.main.Main.main(Main.java:12) |
Voici la ligne du bind, précédée de la récupération de mon IPv4 Internet.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Socket s = new Socket("monip.org", 80);
s.getOutputStream().write("GET / HTTP/1.1\nHost: monip.org\n\n".getBytes());
// Envoi de requête HTTP à www.monip.org
byte[] b = new byte[2048];
int rc = s.getInputStream().read(b);
s.close();
// Récupération des données et fermeture du Socket employé
String straddr = new String(b, 0, rc).split("IP : ")[1].split("<br>")[0];
// straddr contient l'IP sous forme de chaîne de caractères
this.sv.socket().bind(new InetSocketAddress(InetAddress.getByName(straddr), 32740));
// sv est un attribut ServerSocketChannel |
Merci d'avance :)