Exemple
package fr.dyma;
import fr.dyma.model.Article;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.time.OffsetDateTime;
public class ServerTcp {
public final static Logger logger = LogManager.getLogger(ServerTcp.class);
public final static int PORT = 9630;
public static void main(String[] args) {
try (ServerSocket socketServeur = new ServerSocket(PORT)) {
logger.info("Lancement du serveur TCP");
while (true) {
Socket socketClient = socketServeur.accept();
Runnable socketThread = () -> {
try {
processThread(socketClient);
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
};
socketThread.run();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static void processThread(Socket socketClient) throws ClassNotFoundException, IOException {
logger.info("Connexion avec : " + socketClient.getInetAddress());
readClientInput(socketClient);
sendResponse(socketClient);
}
private static void readClientInput(Socket socketClient) throws IOException, ClassNotFoundException {
var in = new ObjectInputStream(socketClient.getInputStream());
Article article = (Article) in.readObject();
logger.info("Lecture de l'article venant du client : " + article);
}
private static void sendResponse(Socket socketClient) throws IOException {
var articleOut = new Article("article out", "Le serveur fonctionne !", ":)", OffsetDateTime.now());
var out = new ObjectOutputStream(socketClient.getOutputStream());
out.writeObject(articleOut);
}
}Langage du code : Java (java)
package fr.dyma;
import fr.dyma.model.Article;
import fr.dyma.service.LogService;
import fr.dyma.service.impl.LogServiceImpl;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class ClientTcp {
public final static LogService logService = new LogServiceImpl();
public static final Logger logger = LogManager.getLogger(ClientTcp.class);
public static void main(String[] args) {
logService.logging();
try {
var serveur = InetAddress.getByName("localhost");
var socket = new Socket(serveur, ServerTcp.PORT);
sendRequest(socket);
readServerResponse(socket);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
private static void sendRequest(Socket socket) throws IOException {
var out = new ObjectOutputStream(socket.getOutputStream());
logger.info("Envoi d'un article au serveur...");
var articleClient = new Article("article client", "Coucou du client !", ":D", null);
out.writeObject(articleClient);
logger.info("Article envoyé !");
}
private static void readServerResponse(Socket socket) throws IOException, ClassNotFoundException {
var in = new ObjectInputStream(socket.getInputStream());
Article article = (Article) in.readObject();
logger.info("Lecture de l'article venant du serveur : " + article);
}
}Langage du code : Java (java)