Maison  >  Article  >  base de données  >  Comment implémenter une fonction de salle de discussion simple en utilisant MySQL et Java

Comment implémenter une fonction de salle de discussion simple en utilisant MySQL et Java

王林
王林original
2023-09-21 17:13:421460parcourir

Comment implémenter une fonction de salle de discussion simple en utilisant MySQL et Java

Comment implémenter une fonction de chat simple à l'aide de MySQL et Java

Introduction :
Avec la prédominance des médias sociaux aujourd'hui, les gens s'appuient de plus en plus sur le chat en ligne pour communiquer et partager des informations. Comment implémenter une fonction simple de salon de discussion en utilisant MySQL et Java est un projet très intéressant et pratique. Cet article expliquera comment utiliser MySQL et Java pour implémenter cette fonction et fournira des exemples de code spécifiques.

1. Créer une base de données
Tout d'abord, nous devons créer une base de données dans MySQL pour stocker les informations relatives à la salle de discussion. Vous pouvez utiliser les instructions SQL suivantes pour créer des bases de données et des tables.

CREATE DATABASE chatroom;

USE chatroom;

CREATE TABLE utilisateurs (
id INT PRIMARY KEY AUTO_INCREMENT,
nom d'utilisateur VARCHAR(50) UNIQUE,
mot de passe VARCHAR(50)
);

CREATE TABLE messages (
IDINT PRIMARY KEY AUTO_INCREMENT,
sender_id INT,
Receiver_id INT,
message VARCHAR(200),
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (sender_id) REFERENCES utilisateurs (id),
FOREIGN KEY (receiver_id) REFERENCES utilisateurs (id)
) ;

Dans le code ci-dessus, nous créons une base de données appelée chatroom et y créons deux tables : utilisateurs et messages. La table des utilisateurs est utilisée pour stocker les informations utilisateur, notamment l'identifiant, le nom d'utilisateur et le mot de passe. La table des messages est utilisée pour stocker les informations sur le message, notamment l'ID de l'expéditeur, l'ID du destinataire, le contenu du message et l'horodatage du message.

2. Écrivez du code Java
Ensuite, nous devons utiliser Java pour implémenter la fonction de salle de discussion. Tout d’abord, nous créons une classe nommée ChatServer pour établir une connexion côté serveur et traiter les messages.

importer java.io.*;
importer java.net.*;
importer java.util.*;

public class ChatServer {
private static ArrayList clientOutputStreams;

public static void main(String[] args) {

  clientOutputStreams = new ArrayList<PrintWriter>();
  try {
     ServerSocket serverSock = new ServerSocket(5000);

     while (true) {
        Socket clientSocket = serverSock.accept();
        PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
        clientOutputStreams.add(writer);

        Thread t = new Thread(new ClientHandler(clientSocket));
        t.start();
        System.out.println("Got a connection");
     }
  } catch (Exception ex) {
     ex.printStackTrace();
  }

}

public static void tellEveryone(String message) {

  Iterator<PrintWriter> it = clientOutputStreams.iterator();
  while (it.hasNext()) {
     try {
        PrintWriter writer = (PrintWriter) it.next();
        writer.println(message);
        writer.flush();
     } catch (Exception ex) {
        ex.printStackTrace();
     }
  }

}
}

Dans le code ci-dessus, nous utilisons la classe ServerSocket pour écouter le port 5000 et utilisons ArrayList pour stocker toutes les connexions au server L'objet PrintWriter du client. La méthode "tellEveryone" permet d'envoyer un message à tous les clients connectés au serveur.

Ensuite, nous créons une classe appelée ClientHandler pour gérer les messages des clients. *; ) {

  try {
     sock = clientSocket;
     InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
     reader = new BufferedReader(isReader);
  } catch (Exception ex) {
     ex.printStackTrace();
  }

}

public void run() {

  String message;
  try {
     while ((message = reader.readLine()) != null) {
        System.out.println("read " + message);
        ChatServer.tellEveryone(message);
     }
  } catch (Exception ex) {
     ex.printStackTrace();
  }

}
}

Dans le code ci-dessus, nous utilisons la classe BufferedReader pour lire le message envoyé par le client, puis appelons la méthode tellEveryone de ChatServer pour envoyer le message à tous les clients connectés au serveur.

3. Testez la fonction de salle de discussion

Enfin, nous utilisons une classe appelée ChatClient pour tester la fonction de salle de discussion.

importer java.io.*;

importer java.net.*;

importer java.awt.*;
importer java.awt.event.*;

classe publique ChatClient {

privé statique TextArea messageArea;

privé statique TextField inputField ;
bouton statique privé sendButton ;

écrivain PrintWriter statique privé ;

chaussette de socket statique privée ;

public static void main(String[] args) {

  buildGUI();
  setupNetworking();

}


private static void buildGUI() {

  Frame frame = new Frame("Chat Client");
  messageArea = new TextArea();
  inputField = new TextField();
  sendButton = new Button("Send");

  sendButton.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent event) {
        try {
           String message = inputField.getText();
           writer.println(message);
           writer.flush();
           inputField.setText("");
        } catch (Exception ex) {
           ex.printStackTrace();
        }
     }
  });

  frame.add(messageArea, BorderLayout.CENTER);
  frame.add(inputField, BorderLayout.SOUTH);
  frame.add(sendButton, BorderLayout.EAST);
  frame.setSize(400, 300);
  frame.setVisible(true);

}

private static void setupNetworking() {

  try {
     sock = new Socket("localhost", 5000);
     InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
     BufferedReader reader = new BufferedReader(isReader);
     writer = new PrintWriter(sock.getOutputStream());
     Thread readerThread = new Thread(new IncomingReader(reader));
     readerThread.start();
  } catch (Exception ex) {
     ex.printStackTrace();
  }

}

private static class IncomingReader implémente Runnable {

  private BufferedReader reader;

  public IncomingReader(BufferedReader reader) {
     this.reader = reader;
  }

  public void run() {
     String message;
     try {
        while ((message = reader.readLine()) != null) {
           System.out.println("incoming " + message);
           messageArea.append(message + "

");

        }
     } catch (Exception ex) {
        ex.printStackTrace();
     }
  }

}

}

Dans le code ci-dessus, nous utilisons la bibliothèque AWT pour créer l'interface graphique de chat du client. Envoyez des messages en cliquant sur le bouton d'envoi, puis utilisez la classe Socket pour établir une connexion avec le serveur et envoyer et recevoir des messages.

Conclusion :

Grâce aux étapes ci-dessus, nous avons réussi à implémenter un. application simple utilisant MySQL et Java. Utilisez une base de données pour stocker les informations et les messages des utilisateurs, gérez la communication côté client et côté serveur via le code Java et utilisez une interface graphique pour fournir une interface de discussion conviviale. cet exemple sera utile aux lecteurs qui souhaitent apprendre et pratiquer la fonction de salon de discussion

Aide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn