Android Socket connexion refusée
Je suis en train d'essayer d'ouvrir un Socket sur Android, mais chaque fois que j'essaie, je reçois connexion refusée erreur peu importe ce que je cherche.
L'erreur se produit sur la ligne de code suivante, où j'essaie de créer la connexion.
Socket socket = new Socket(getLocalIpAddressString(), 8008);
Ce qui suit est la méthode que j'utilise pour obtenir l'adresse ip locale:
public static String getLocalIpAddressString() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e("IPADDRESS", ex.toString());
}
return null;
}
Et l'erreur que j'obtiens est:
WARN/System.err(3574): java.net.ConnectException: /192.168.2.163:8008 - Connection refused
WARN/System.err(3574): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:237)
WARN/System.err(3574): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:199)
WARN/System.err(3574): at java.net.Socket.startupSocket(Socket.java:734)
WARN/System.err(3574): at java.net.Socket.<init>(Socket.java:157)
WARN/System.err(3574): at com.networks.phone.engine.SIPEngine.rtpTest(SIPEngine.java:1444)
Je présume que c'est une erreur avec mon adresse ip et de port ou? Mais quelqu'un peut me pointer dans la bonne direction quant à ce qui pourrait être la cause?
Pouvez-vous telnet à l'adresse et du numéro de port premier à voir ce qui se passe. Il pourrait être le réel de l'ordinateur auquel vous vous connectez.
Je suis en train d'essayer cela sur un appareil Android, donc je ne suis pas sûr que telnet serait beaucoup aider?
Cela peut être une question stupide, mais est-il quelque chose à l'écoute sur le port 8008 sur votre appareil?
Je reçois connexion refusée n'importe quel port je tente 🙂
Bien, je suppose que je voulais dire que si il n'y a pas un autre programme qui écoute sur le port 8008 alors vous ne serez pas en mesure de se connecter. Êtes-vous essayer d'accepter les demandes entrantes ou de se connecter à un autre programme?
Je suis en train d'essayer cela sur un appareil Android, donc je ne suis pas sûr que telnet serait beaucoup aider?
Cela peut être une question stupide, mais est-il quelque chose à l'écoute sur le port 8008 sur votre appareil?
Je reçois connexion refusée n'importe quel port je tente 🙂
Bien, je suppose que je voulais dire que si il n'y a pas un autre programme qui écoute sur le port 8008 alors vous ne serez pas en mesure de se connecter. Êtes-vous essayer d'accepter les demandes entrantes ou de se connecter à un autre programme?
OriginalL'auteur Donal Rafferty | 2010-03-11
Vous devez vous connecter pour publier un commentaire.
À partir de votre code, je suppose que vous tentez d'ouvrir un socket de connexion d'une application Android pour le même appareil Android.
Étant basé sur Linux et tous, peut-être que Android a une sorte de pare-feu de connexion ou des règles qui empêchent votre socket pour se connecter avec succès. Vérifiez la documentation, il peut être un Androïde problème de configuration et pas un Java problème.
OriginalL'auteur Olivier Croisier
Un bon code de l'application android, qui déclare autorisation réseau dans son manifeste peut accepter les connexions sur unpriveleged ports comme il n'y a pas de pare-feu sur l'appareil.
Cependant, de nombreux wifi et la plupart des réseaux mobiles va placer l'appareil derrière un NAT, un pare-feu externe, de sorte entrant les tentatives de connexion peuvent jamais atteindre.
OriginalL'auteur Chris Stratton
J'ai utilisé la commande ipconfig dans l'invite, puis j'ai utilisé le "Adresse IPv4" pour la connexion à PC actuel.
J'ai connecté le Serveur avec succès ainsi que les envoyés & octets reçus.
Android Côté Client Code:
PC de Côté de Serveur de Code:
OriginalL'auteur Ganesh Bhosale
Dans mon cas, j'avais besoin de rediriger les ports, ont un coup d'oeil:
http://developer.android.com/guide/developing/tools/emulator.html#redirections
Ou peut-être vous pouvez essayer de transfert des ports.
OriginalL'auteur Meriadoc
J'ai eu le même problème. J'ai eu à utiliser ServerSocket au lieu de la Prise:
ServerSocket socket = new ServerSocker(8888);
OriginalL'auteur Silas