web-dev-qa-db-fra.com

Comment créer un serveur de base Java?

Essentiellement, je veux un serveur de base Java auquel plusieurs personnes peuvent être connectées et lorsqu'un des clients connectés (déjà codé en Obj-c) lui envoie des données, il les renvoie à tous ceux qui est connecté.

Je suis un vrai Java débutant et je ne vais pas avoir besoin de Java dans un avenir prévisible pour quoi que ce soit, mais cela, donc je le veux comme dès que possible plutôt que d'apprendre Java correctement à partir de zéro. Donc, si quelqu'un a du code source pour cela ou peut-être un tutoriel, il serait grandement apprécié.

Merci :) Ozzie

25
IApp

Voici un simple serveur "Knock Knock" gracieuseté de Sun:

import Java.net.*;
import Java.io.*;

public class KnockKnockServer {
    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(4444);
        } catch (IOException e) {
            System.err.println("Could not listen on port: 4444.");
            System.exit(1);
        }

        Socket clientSocket = null;
        try {
            clientSocket = serverSocket.accept();
        } catch (IOException e) {
            System.err.println("Accept failed.");
            System.exit(1);
        }

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(
                new InputStreamReader(
                clientSocket.getInputStream()));
        String inputLine, outputLine;
        KnockKnockProtocol kkp = new KnockKnockProtocol();

        outputLine = kkp.processInput(null);
        out.println(outputLine);

        while ((inputLine = in.readLine()) != null) {
             outputLine = kkp.processInput(inputLine);
             out.println(outputLine);
             if (outputLine.equals("Bye."))
                break;
        }
        out.close();
        in.close();
        clientSocket.close();
        serverSocket.close();
    }
}

Vous ne pouvez pas être beaucoup plus simple que cela.

18
David Titarenco

Un didacticiel simple est disponible via Sun:

http://Java.Sun.com/developer/onlineTraining/Programming/BasicJava2/socket.html#server

Il commence par un thread unique de base comme ci-dessus et s'étend pour en utiliser plusieurs selon les besoins.

4
Adam MacLeod

Essayez d'utiliser l'API du serveur Jetty. http://wiki.Eclipse.org/Jetty/Tutorial/Embedding_Jetty ressemble à un bon point de départ ...

1
Philippe

Je commencerais par regarder la multidiffusion en Java:

http://Java.Sun.com/docs/books/tutorial/networking/datagrams/broadcasting.html

0
Keith Adler

J'ai fait un programme Java qui implémentait essentiellement une sorte de chat entre un client et un serveur. J'ai utilisé un socket pour ouvrir un port du serveur qui entendrait les connexions entrantes. Vous devriez avoir un thread les entendre et appeler des actions lorsqu'une connexion valide entre en jeu.

0
JorgeO