0
votes

Envoyer des objets du serveur au client dans les sockets Java

Je veux envoyer des objets du serveur au client dans les sockets Java. Je peux les envoyer du client au serveur, mais je suis en difficulté à leur envoyer du serveur au client. Je suis nouveau à Java alors j'apprends toujours les bases. Je sais que c'est quelque chose de relativement mineur que je dois faire, mais je me débats avec elle pour le moment. Quelqu'un peut-il ajouter les bits du code que je manque?


1 commentaires

Vous devez publier ce que vous avez tenté jusqu'à présent afin que nous puissions vous aider de manière significative.


3 Réponses :


1
votes

Ouvrez une autre connexion dans un autre fil et laissez le client être serveur et que le serveur soit client. Donc, dans un fil d'envoi A -> B, dans un autre fil, vous ouvrez une autre prise et commencez à envoyer B B -> A.

Le problème avec les prises de bas niveau est que si un côté écrit, l'autre devrait être écoutant. . Cela signifie que vous devez implémenter le protocole de requête de commande, qui est une tâche lourde. Donc, avec ma proposition, vous utiliserez deux ports, mais vous savez que vous aurez 2 tuyaux de flux de données. xxx

Il sera plus facile si vous commencez simplement avec des sockets. < / p>


0 commentaires

0
votes

Vous pouvez utiliser ObjectOutPutStream STRT> pour envoyer un objet via la prise et ObjectInpuTream Strort> pour recevoir un:

private PrintWriter pw;
private BufferedReader br;

public SocketHandler(Socket cs) {
    this.pw = new PrintWriter(cs.getOutputStream());
    this.br = new BufferedReader(new InputStreamReader(cs.getInputStream()));
}

public void sendMsg(String msg) {
    this.pw.println(msg);
    this.pw.flush();
}

public String receiveMsg() {
    return this.br.readLine();
}


0 commentaires

0
votes

Ci-dessous, j'ai un exemple de code côté serveur que j'ai utilisé pour une application il y a un moment, je vous donnerai une explication quant à ce qui se passe ici:

Tout d'abord, vous devez créer votre serversion dans l'ordre. Pour accepter les demandes du client (comme vous le savez déjà): p>

Socket clientSocket = serverSocket.accept();
System.out.println("Connection made to: " + clientSocket);
BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String messageString = "";
String line;
System.out.println("Enter while loop to retrieve client message...");
while((line = br.readLine()) != null) {
        String clientRequestLine = line;
        if(clientRequestLine.contains("check return user credentials")) {
        String userNamePassWord = clientRequestLine.replace("check return user credentials", "");
        userNamePassWord = userNamePassWord.trim();
        String[] userNamePassWordSplitter = userNamePassWord.split(" ");
        String userName = userNamePassWordSplitter[0];
        String passWord = userNamePassWordSplitter[1];
        System.out.println("Username: " + userName + "\nPassword: " + passWord);
            boolean isValidUserNamePassWord = ReturnPatientCredentials.checkUserNamePassWord(userName, passWord);
        if(isValidUserNamePassWord) {
                System.out.println("valid");
                out.println("valid");
                    }
        else {
                System.out.println("invalid");
                out.println("invalid");
                    }
                }


0 commentaires