2010-02-02 35 views
20

Temelde, birden çok kişinin bağlanabileceği ve bağlı istemcilerden biri (Obj-c'de zaten kodlanmış) veri gönderdiği temel bir Java Sunucusu olmasını istiyorum. Bu veriyi, ona bağlayan herkese geri gönderir.Temel bir Java Sunucusu nasıl oluşturulur?

Gerçek bir Java Newbie'yim ve Java'ya gelecekte ihtiyaç duyulan herhangi bir şey için ihtiyaç duymayacağım ama bu yüzden Java'yı doğru bir şekilde sıfırdan öğrenmek yerine mümkün olan en kısa zamanda yolumdan çıkarmak istiyorum. Yani, bu ya da belki de bir öğretici için bazı kaynak kodları varsa, büyük ölçüde takdir edilecektir.

Teşekkür :) Ozzie

+0

Müşteriler ne tür bir protokol kullanıyor? –

+1

Soketleri kullanıyorlar :) – IApp

+4

Yeniden açmaya oy verildi - SO gerçekten iyi cevapları olabilecek soruların nasıl ele alınacağını anlamalı. –

cevap

16

görünüyor Güneşin basit bir "Knock" sunucu nezaket şudur: Bu çok daha basit olamıyorum

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(); 
    } 
} 

. Bu yukarıdaki gibi temel bir tek iplik ile başlar ve gerektiğinde birden kullanmak uzanır

http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/socket.html#server

:

+0

Bugün daha erken bir inceleme yaptım ve PHP'de benzer bir kod yazdım. Şu anda birden çok kullanıcıya bağlanmak ve göndermek istiyorum, görünüşe göre Multi-threading'e ihtiyacım var? Sağladığınız örnekte bunu nasıl yapacağımı biliyor musunuz? – IApp

+1

http://www.kieser.net/linux/java_server.html - sadece bağlantıları idare eden ve thread() –

+13

ile knockKnockProtocol' nedir? –

-1

muhtemelen serversocket sınıfını kullanmanız gerekecektir.

+0

Yeh Bunu biraz gördüm ama anlaması oldukça zor. Teşekkürler :) – IApp

0

Temel olarak bir istemci ve sunucu arasında bir tür sohbet uygulayan bir Java programı yaptım. Gelen bağlantıları duyacak sunucunun bir portunu açmak için bir soket kullanılır. Geçerli bir bağlantı geldiğinde onları dinleyen ve eylemleri çağıran bir iş parçacığınız olmalıdır.

+0

Yeh, çalışan basit bir PHP soket sunucusu almayı başardı ama bir seferde sadece 1 müşteri bağlamayı başardı. Actionscript veya Objective-C olmadıkça temelde kayboldum! – IApp

1

Jetty sunucu API'sini kullanmayı deneyin. http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty İşte ... iyi bir başlangıç ​​noktası gibi

+0

Teşekkürler! Bir bakacağım! Tek sorun şu ki, hiçbir Java bilgisine sahip olmadığım için, bu konuda oldukça fazla bilgi sahibi olmakta zorlanıyorum. Müvekkilimizi göstermek için sadece bir Java Sunucusuna ihtiyacım var. Her ne kadar aslında benim yaptığım üniversite dersi doğrultusunda gelecek yıl Java öğrenmeyi planlıyorum! – IApp

+0

Evet, basit web tabanlı İstek/yanıt senaryoları için oldukça basit olsa da, bazı Java bilgisi gerektirir. Nissan Fan'ın cevabının kullanım durumunuz için daha iyi olduğunu düşünüyorum. – Philippe

+0

@IApp - Tanımladığınız proje için herhangi bir çerçeveyi kullanmanızı önermiyorum (Jetty bir çerçeve). KISS - Kısa ve Basit Tutun. Şu anda, –

4

Sun yoluyla ulaşılabilir basit öğretici yoktur.

İlgili konular