2010-02-02 11 views
20

Básicamente quiero un servidor Java básico al que se puedan conectar varias personas y cuando uno de los clientes conectados (ya codificado en Obj-c) le envíe datos, lo envíe de vuelta a todos los que estén conectados.¿Cómo crear un servidor Java básico?

Soy un Novato de Java real y no voy a necesitar Java en un futuro previsible para nada más que esto, así que quiero salir lo antes posible en lugar de aprender Java desde cero. Entonces, si alguien tiene algún código fuente para esto o tal vez un tutorial, sería muy apreciado.

Gracias :) Ozzie

+0

¿Qué tipo de protocolo usan los clientes? –

+1

Usan conectores :) – IApp

+4

Votaron para reabrir - ASÍ QUE realmente necesitan resolver cómo manejar las preguntas que pueden tener varias buenas respuestas. –

Respuesta

16

Aquí es un simple servidor de cortesía "Knock Knock" 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(); 
    } 
} 

No se puede conseguir mucho más simple que esto.

+0

Tuve un rápido vistazo sobre eso el día de hoy y codifiqué algo similar en PHP que funcionó muy bien para pruebas anteriores. Por el momento, aunque estoy buscando conectar y enviar a varios usuarios, ¿al parecer necesito Multi-threading? ¿Sabes cómo voy a hacer eso con el ejemplo que me has proporcionado? – IApp

+1

http://www.kieser.net/linux/java_server.html: usted simplemente crea una clase que maneja las conexiones e invoca a través de thread() –

+13

¿Qué es 'KnockKnockProtocol'? –

-1

que probablemente tendrá que utilizar la clase serversocket.

+0

Sí, vi un poco sobre eso, pero me resulta bastante difícil de entender. Gracias :) :) – IApp

0

Hice un programa Java que básicamente implementaba un tipo de chat entre un cliente y un servidor. Usó un socket para abrir un puerto del servidor que escucharía las conexiones entrantes. Debería tener un hilo que los oiga y llame cuando haya una conexión válida.

+0

Sí, logré hacer funcionar un servidor de socket PHP básico pero solo pude conectar 1 cliente a la vez. ¡A menos que sea Actionscript u Objective-C, básicamente estoy perdido! – IApp

1

Pruebe usar la API del servidor Jetty. http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty parece un buen punto de partida ...

+0

¡Gracias! ¡Le daré un vistazo! El único problema es que, literalmente, no tengo ningún conocimiento de Java, así que me resulta difícil entender bastante de lo que tratan. Solo necesito un servidor Java para demostrar mi cliente. ¡Aunque en realidad estoy planeando aprender Java el próximo año en línea con el curso universitario que estoy haciendo! – IApp

+0

Sí, requiere cierto conocimiento de Java aunque puede ser bastante simple para simples escenarios de solicitud/respuesta basados ​​en web. Creo que la respuesta de Nissan Fan es mejor para tu caso de uso. – Philippe

+0

@IApp - Para el proyecto que describió, no recomiendo usar ningún framework (Jetty es un framework). KISS: mantenlo corto y simple. –