Serveur Linux avec client Android: connexion expirée

Je travaille sur une application Android connectée à un serveur programmé en Java. Le serveur et le client communiquent comme programmé lorsque je teste l'application serveur sur Windows.

Maintenant, j'ai déplacé l'expérience vers Linux Ubuntu OS. L'application Android (client) est capable d'envoyer des chaînes mais lorsque le serveur sous Linux tente d'envoyer une chaîne à Android, il échoue. Cela prend plus de temps et donne cette erreur:

Testing.NewJFrame$1 run
SEVERE: null
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.(Socket.java:425)
at java.net.Socket.(Socket.java:208)
at Testing.NewJFrame$1.run(NewJFrame.java:178)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Voici le code du côté serveur:

Socket clientSocket = null;
ServerSocket serverSocket = null;
String clientIP;
int port = 4447;

et en fonction de certaines conditions, les éléments suivants seront déclenchés:

System.out.println("Attempting connect to "+clientIP+" through "+ port);
Socket socket = new Socket(clientIP, port);
System.out.println("Connection made");
OutputStream output = socket.getOutputStream();
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(output)), true);
out.println(appName + " has been installed and launched in Background");
System.out.println("Message sent...");

Mais il s'arrête à la ligne "Tentative de connexion ......"

Voici le code du côté client:

public void listenToServer(){
    new Thread (new Runnable(){
        @Override
        public void run() {
            try {
                serverSocket = new ServerSocket(4447);
            } catch (IOException e) {
                e.printStackTrace();
            }
            while (true) {
                try {
                    client = serverSocket.accept();
                    Scanner in = new Scanner(client.getInputStream());
.
.
.
.
.

S'il vous plaît prendre note que ces deux codes fonctionnent bien dans Windows, mais il ne fonctionne pas sur Linux Ubuntu!

0
peut-être poster votre code d'envoi/réception?
ajouté l'auteur Christopher Francisco, source
parce que quand j'envoie des chaînes au serveur, il les reçoit et répond sur base de ce que j'ai envoyé du client.
ajouté l'auteur Saeed, source
Du côté du serveur, qui est Linux Ubuntu. S'il vous plaît prendre note que j'ai désactivé le pare-feu pour voir si elle bloque mais pas de chance jusqu'à présent.
ajouté l'auteur Saeed, source
L'application Android (client) est capable d'envoyer des chaînes . Comment le sais-tu? Vous pouvez seulement être sûr si le serveur les a reçus. Vous ne nous avez pas informé à ce sujet.
ajouté l'auteur greenapps, source
Où sont ces erreurs que vous avez postées? Sur le serveur ou le client?
ajouté l'auteur greenapps, source

1 Réponses

Je voudrais partager la réponse que j'ai trouvée il y a quelques semaines au cas où quelqu'un serait intéressé.

J'ai trouvé que la raison derrière cette erreur dans la question est la configuration réseau que j'utilise. Je travaille depuis mon bureau à l'université et j'applique un certain niveau de sécurité en permettant à ce type de communication p2p d'envoyer des messages à des ordinateurs locaux, mais pas l'inverse. Donc, je suis en mesure d'envoyer des messages d'Android au serveur qui est essentiellement mon bureau. Ce dernier est connecté via un réseau isolé pour assurer un certain niveau de sécurité.

Désolé de revenir en retard et merci pour vous les gars qui ont partagé leurs points de vue

0
ajouté
(TgLINUX) GNU/LINUX fr-Tchat TeleGram
(TgLINUX) GNU/LINUX fr-Tchat TeleGram
565 des participants

Groupe d'échange et d'entraide sur les OS GNU/Linux exclusivement, ouvert au public débutants,passionnés & habitués. $sudo ./bienvenue.sh REGLES(CGU): http://telegra.ph/TgLinux-09-03 FBK,TWEET: @TgLinux CHAINE:@UbuntuFacile @FrLibreOffice