2017-10-19 31 views
-1

Je suis en train d'apprendre à propos de Sockets en Java et il me manque seulement comment recevoir une réponse en retour du serveur.Connexion refusée du client au serveur

Après How to send string array object et How to send and receive serialized object in socket channel, je suis en train de demander à l'utilisateur de choisir autant qu'il veut de choix:

1 - 2 - 3 - 4

Et puis je veux partager et les envoyer comme un tableau à un serveur, où le serveur doit renvoyer le nombre de choix que l'utilisateur a choisi.

Par exemple, si l'utilisateur a choisi

2 3 4 1 2 3 4 1

Server doit retourner

8

serveur envoie bien la réponse, mais du côté client que j'obtiens l'erreur:

Exception in thread "main" java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.(Unknown Source) at java.net.Socket.(Unknown Source) at ClientClass.main(ClientClass.java:26)

I Je ne suis pas sûr pourquoi le problème. De l'aide?

Mon client:

import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.net.InetSocketAddress; 
import java.net.Socket; 
import java.nio.channels.ServerSocketChannel; 
import java.nio.channels.SocketChannel; 
import java.util.Scanner; 

public class ClientClass { 

    public static void main(String args[]) throws IOException, ClassNotFoundException 
    { 
     // take order and convert it to array of choices 
     Scanner myScanner = new Scanner(System.in); // take from user 
     System.out.println("Enter all your choices seperated by space:"); 
     System.out.println("Choices are: 1- 2- 3- 4"); 
     String orderString = myScanner.next(); 
     orderString += myScanner.nextLine(); 
     String orderArray[] = orderString.split(" "); 

     // send request to server 
     Socket mySocket = new Socket("127.0.0.1", 4444); // create a socket 
     ObjectOutputStream out = new ObjectOutputStream(mySocket.getOutputStream()); 
     out.writeObject(orderArray); 

     // get response from server 
     InputStream is = mySocket.getInputStream(); 
     InputStreamReader isr = new InputStreamReader(is); 
     BufferedReader br = new BufferedReader(isr); 
     String message = br.readLine(); 
     System.out.println("Message received from the server : " +message); 

    } 
} 

Mon serveur:

import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.io.PrintStream; 
import java.net.InetSocketAddress; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.nio.channels.SocketChannel; 
import java.util.Scanner; 

public class ServerClass { 

    public static void main(String args[]) throws IOException, ClassNotFoundException 
    { 
     // receive 
     ServerSocket myServerSocket = new ServerSocket(4444); // create a server socket 
     Socket mySimpleSocket = myServerSocket.accept(); // accept requests 
     ObjectInputStream ois = new ObjectInputStream(mySimpleSocket.getInputStream()); 
     String[] choices = (String[]) ois.readObject(); 


     // send back response 
     OutputStream os = mySimpleSocket.getOutputStream(); 
     OutputStreamWriter osw = new OutputStreamWriter(os); 
     BufferedWriter bw = new BufferedWriter(osw); 
     bw.write(choices.length); 
     System.out.println("Message sent to the client is "+choices.length); 
     bw.flush(); 

    } 
} 

Répondre

0

server is sending response fine

Très mauvais. Le serveur n'obtient même pas une connexion entrante, sans parler de lire la requête, et encore moins d'envoyer une réponse.

but on the client side I get error:

Exception in thread "main" java.net.ConnectException: Connection refused: connect at 

Sur cette preuve, le serveur n'a même pas été en cours d'exécution. Certainement pas en cours d'exécution dans le même hôte que le client, ce qui est requis par new Socket("127.0.0.1", 4444).