Ceviz Foruma Hoş Geldiniz.
Bulunan 1 den 5 - Toplam 5
  1. #1
    Ceviz Üyesi
    Üyelik Tarihi
    21-Kasım-2011
    Mesaj
    18

    Varsayılan Java'da bir Web Sunucu Implement Etmek

    Merhabalar;
    Aşağıda bir web serverini emule eden basit bir java kodu gösterilmiştir. Sunucu , istemci ne gönderirse onu cevap olarak vermektedir. Port numarasını arguman olarak almaktadır. Ubuntu 11.10 kullanıyorum, tarayıcım Mozilla Firefox, Eclipse kullanıyorum. Kod aşağıdadır:

    Kod:
       package p106;
     
    
     import java.io.*;
     import java.net.*;
     
    
     publicclass HttpMirror {
     
    
     publicstaticvoid main(String[] args) {
     
    
     try
             {
     //Get the port.
     int port = Integer.parseInt(args[0]);
     
     //Create a socket for listening that port.  
                 ServerSocket ss = new ServerSocket(port);
     
     for(;;)
                 {
     
     /* Wait for connection from the client. Routine will be blocked when
                      * it returns the socket that connected to the client.   
                      * */
                     Socket client = ss.accept();
     
     //Set the input and output in order to talk with the client.
                     BufferedReader in = new BufferedReader( new InputStreamReader(client.getInputStream()));
                     PrintWriter out = new PrintWriter(client.getOutputStream());
     
                     out.print("HTTP/1.0 200 en");
                     out.print("Content-Type text/plain");
     
     /* At that point, read HTTP request and send it back to the client.
                      *  
                      * */
     
                     String line;
     while( (line = in.readLine()) != null)
                     {
     if(line.length() == 0)
     break;
                         out.print(line );
     
                     }
     
                     out.close();
                     in.close();
                     client.close();
     
                 } // Tekrardöngüyegirvebirsonrakibağlantıyıbekle.  
             }catch(Exception e)
             {
                 System.err.println(e);
             }
     
    
         }
     
    
     }
    Kodu çalıştırdıktan sonra tarayıcıya localhost:4444 ve 127.0.0.1:4444 yazınca kod çalışmıyor. Çözüm yolunu bilen var mı?

  2. #2
    Ceviz Üyesi
    Üyelik Tarihi
    16-Aralık-2010
    Nerden
    istanbul
    Mesaj
    73

    Varsayılan

    aslında senin socketine istek geliyor, bu isteği okuyorsun da fakat cevapta bir problem var. Firefox görüntüleyemiyor. Aşağıdaki şekilde deneyebilir misin?

    Kod:
                    String newLine = "\r\n";
                    out.print("HTTP/1.1 200 OK" + newLine);
                    out.print("Content-Type text/plain" + newLine);
    
                    /*
                     * At that point, read HTTP request and send it back to the
                     * client.
                     */
                    
                    String line;
                    while ((line = in.readLine()) != null) {
                        if (line.length() == 0)
                            break;
                        out.print(line + newLine);
                        System.out.println(line);
                    }
                    out.print(newLine + newLine);
    Son düzenleyen 0guzhan, 09-Mayıs-2012 saat 15:45.
    Blog: 0guzhan.blogspot.com
    YOU SHOULDN'T BUILD A TOOL WHEN YOU COULD PURCHASE ONE.

  3. #3
    Ceviz Üyesi
    Üyelik Tarihi
    16-Aralık-2010
    Nerden
    istanbul
    Mesaj
    73

    Varsayılan

    Bir tane boş satır attıktan sonra gelen veriler body olarak ele alınıyormuş. Bu linkten kontrol edebilirsin.

    Kod:
                    String crlf = "\r\n";
                    out.print("HTTP/1.1 200 OK" + crlf);
                    out.print("Content-Type text/plain" + crlf);
    
                    /*
                     * At that point, read HTTP request and send it back to the
                     * client.
                     */
                    out.print(crlf);
                    String line;
                    while ((line = in.readLine()) != null) {
                        if (line.length() == 0)
                            break;
                        out.print(line + crlf);
                        System.out.println(line);
                    }

    Aşağıdaki kodu ceviz.net' in cevabını görmek için kullandım. Belki işine yarar.

    Kod:
            try {
                Socket socket = new Socket("www.ceviz.net", 80);
                OutputStream os = socket.getOutputStream();
                PrintWriter writer = new PrintWriter(os);
                String crlf = "\r\n";
                writer.write("GET / HTTP/1.1" + crlf);
                writer.write("Host: www.ceviz.net:80" + crlf);
                writer.write("User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1" + crlf);
                writer.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" + crlf);
                writer.write("Accept-Language: en-us,en;q=0.5" + crlf);
                writer.write("Accept-Encoding: gzip, deflate" + crlf);
                writer.write("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" + crlf);
                writer.write("DNT: 1" + crlf);
                writer.write("Connection: keep-alive" + crlf);
                writer.write(crlf + crlf);
                writer.flush();
                
                InputStream is = socket.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                String line = null;
                while( (line=reader.readLine()) != null ) {
                    System.out.println(line);
                }
                reader.close();
                
                socket.close();
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    Blog: 0guzhan.blogspot.com
    YOU SHOULDN'T BUILD A TOOL WHEN YOU COULD PURCHASE ONE.

  4. #4
    Ceviz Üyesi
    Üyelik Tarihi
    21-Kasım-2011
    Mesaj
    18

    Varsayılan

    Oğuzhan;
    Ceviz.net'in cevabını aldığın kodun çalışıyor. Fakat benim istediğim, kendi bilgisayarım, server gibi daranacak, gene benim bilgisayarım client gibi davranıp, gene kendi bilgisayarımdan cevap alacak. Burada amacım, kendi bilgisayarımın server gibi çalışmasını teyit etmekti. Bu bağlamda ceviz.net kodu çalışmakla birlikte benim istediğim değil.
    Diğer kodlar maalesef istediğim işleri yapmıyor.Teşekkürler emeğin için.

  5. #5
    Ceviz Üyesi
    Üyelik Tarihi
    21-Kasım-2011
    Mesaj
    18

    Varsayılan

    Oğuzhan;


    String crlf = "\r\n"; out.print("HTTP/1.1 200 OK" + crlf); out.print("Content-Type text/plain" + crlf); /* * At that point, read HTTP request and send it back to the * client. */ out.print(crlf); String line; while ((line = in.readLine()) != null) { if (line.length() == 0) break; out.print(line + crlf); System.out.println(line); }

    Düzeltiyorum, bu kodunuz çalışıyor. Teşekkürler.


 

Konu Bilgileri

Bu Konuya Gözatan Kullanıcılar

Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)

Benzer Konular

  1. En uygun fiyatta java server sunucu
    Java / JSP / JSF forum içinde, yazan Gezegen
    Cevap: 0
    Son Mesaj: 23-Kasım-2012, 23:04
  2. Sunucu ile etkilesimli java programi yazdirilacaktir (fiyat arasitmrasi)
    Duyurular & İlanlar forum içinde, yazan kuaza
    Cevap: 0
    Son Mesaj: 09-Nisan-2011, 03:56
  3. Cevap: 2
    Son Mesaj: 13-Aralık-2010, 15:53
  4. Java Menüyü Sayfaya monte etmek???
    Javascript / DHTML / Ajax forum içinde, yazan baros
    Cevap: 4
    Son Mesaj: 15-Aralık-2004, 16:18
  5. Mesaj Sunucu ve İstemcisi için Aracı Merkez Sunucu
    Genel Programlama forum içinde, yazan MUBNET
    Cevap: 2
    Son Mesaj: 21-Temmuz-2003, 21:59

Bu Konu için Etiketler

Yer İmleri

Mesaj Yetkileriniz

  • Yeni konu açmaya yetkiniz yok
  • Cevap yazmaya yetkiniz yok
  • Eklenti yüklemeye yetkiniz yok
  • Mesajınızı düzeltmeye yetkiniz yok
  •  
Yukarı Çık