Avatar billede nima Nybegynder
23. september 2004 - 19:01 Der er 4 kommentarer og
1 løsning

Simpel webserver i java

Hej Alle.

Jeg har fået lavet en simpel webserver i java som kører på port : 6789
Webserveren fungere fint, men problemet er bare når der er blevet requestet et object, f.eks. et billede, svarer webserveren korrekt og billedet bliver vist i browseren, men herefter lukker webserveren forbindelsen, og man kan ikke requeste for flere objekter mere. Hvordan kan jeg få udviddet mit program til at gøre det!?  Har prøvet at sætte while loops ind, men får fejl når jeg requester et nyt objekt.

Her er koden : ----------------------

import java.io.*;
import java.net.*;
import java.util.*;

class WebServer{

    public static void main(String argv[]) throws Exception
    {
      string requestMessageLine;        
      String fileName;
       
          ServerSocket listenSocket = new ServerSocket(6789);
      Socket connectionSocket = listenSocket.accept();
      BufferedReader inFromClient = new BufferedReader
    (new InputStreamReader (connectionSocket.getInputStream()));
          DataOutputStream outToClient = new DataOutputStream
          (connectionSocket.getOutputStream());
      requestMessageLine = inFromClient.readLine();
            StringTokenizer tokenizedLine =
          new StringTokenizer(requestMessageLine);
           
        if (tokenizedLine.nextToken().equals("GET"))
        {
            fileName = tokenizedLine.nextToken();
            if (fileName.startsWith("/") == true)
            fileName = fileName.substring(1);
           
        File file = new File(fileName);
                   
        int numOfBytes = (int) file.length();
       
        FileInputStream inFile = new FileInputStream
                                        (fileName);
       
        byte[] fileInBytes = new byte[numOfBytes];
       
        inFile.read(fileInBytes);
       
        outToClient.writeBytes("HTTP/1.0 200 Document
                      Follows\r\n");
       
        if (fileName.endsWith(".jpg"))
            outToClient.writeBytes("Content-
                        Type:image/jpeg\r\n");
           
        if (fileName.endsWith(".gif"))
        outToClient.writeBytes("Content-
                        Type:image/gif\r\n");
           
        outToClient.writeBytes("Content-length : " +
                        numOfBytes + "\r\n");
       
        outToClient.writeBytes("\r\n");
       
        outToClient.write(fileInBytes, 0, numOfBytes);
   
        connectionSocket.close();
            }
        else System.out.println("hej");
       
        }
    }


-----------------------
Håber i kan hjælpe.. Der skal vidst en eller anden while loop et sted hen i programmet, men hvor ved jeg ik!
Avatar billede arne_v Ekspert
23. september 2004 - 19:08 #1
ServerSocket listenSocket = new ServerSocket(6789);
while(true) {
    Socket connectionSocket = listenSocket.accept();
    ...
}
Avatar billede arne_v Ekspert
23. september 2004 - 19:11 #2
Du kan få lidt mere inspiration her:
  http://eksperten.dk/spm/536730
Avatar billede arne_v Ekspert
23. september 2004 - 22:10 #3
OK ?
Avatar billede j_jorgensen Nybegynder
24. september 2004 - 15:04 #4
Eventuelt også på javabog.dk, kapitel 17...
Avatar billede nima Nybegynder
29. september 2004 - 17:26 #5
Hej ArneV.

Jeg tror bare jeg havde kommet til at sætte while løkken et forkert sted! Men tusind tak for hjælpen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester