Ik ben bezig een simpele webserver te maken in java. Ik heb hem nu zover dat hij een html bestand naar bv internet explorer kan sturen op verzoek daarvan van de browser. Het probleem is hij niet 'stopt' met sturen denk ik want IE blijft bezig totdat ik de server stop,daarna zie je meteen heel de pagina. Ik kan het ook voor elkaar krijgen door in plaats van 'while (true)'...'while(test)' te doen. En test is dan aan het einde van de while false...maar dan sluit die ook meteen de server weer af. Maar ik wil dus dat de server continue blijft draaien...hoe moet dat...ik zie iets over het hoofd maar wat?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
| import java.io.*;
import java.net.*;
import java.util.*;
class Server{
public static void main(String argv[]) throws Exception
{
System.out.println("Webserver, klaar voor gebruik...");
ServerSocket listenSocket = null;
try {
listenSocket = new ServerSocket(5001);
}
catch(Exception e) {
System.out.println( "Kon de server socket niet aanmaken: Exception: " + e );
System.exit(1);
}
while (true) {
System.out.println("Wachten op connectie van client.");
try {
String requestMessageLine;
String filename;
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("Bad Request Message");
}
catch (Exception e) {
System.out.println("Connectie met client verbroken.");
}
}
}
} |
