静的なページのみを扱うWebサーバーを実装しようとしています。 私の超ミニウェブサーバーのコードはここにあります。mozilla firefoxの予期しない動作
import java.io.*;
import java.net.*;
class MyWebServer{
static ServerSocket serSocket = null ;
static{
try {
serSocket = new ServerSocket(80) ;
System.out.println("Server started successfully....\n\n") ;
} catch (IOException io) {
System.out.println(io.getMessage());
System.exit(1) ;
}
}
public static void main(String []args){
while(true){
try {
new Thread(new ServingThread(serSocket.accept())).start() ;
} catch (IOException io) {
System.out.println(io.getMessage());
}
}
}
}
class ServingThread implements Runnable{
private Socket socket ;
public ServingThread(Socket socket){
this.socket = socket ;
System.out.println("Receives a new browser request from " + socket);
}
public void run() {
BufferedReader in = null ;
PrintWriter out = null ;
try {
//reading request headers from browser starts here
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str = ".";
while (!str.equals("")){
str = in.readLine();
//System.out.println(str);
}
System.out.println("\n\n");
//reading request headers from browser ends here
//writing output on outputstream starts here
out = new PrintWriter(socket.getOutputStream(), true) ;
int i = (int) (Math.random() * 10) ;
out.println(i) ;
System.out.println(i) ;
//writing output on outputstream ends here
socket.close() ;
System.out.println("Request successfully fulfilled.\n") ;
}
catch (IOException io) {
System.out.println(io.getMessage());
}
}
}
それは正常に動作しますが、いくつかの回(常にではない)私は新しいタブ(Ctrlキー+ T)を追加 とき
- 私のMozilla Firefoxのクライアント は自動的に、要求を送信したり閉じ既存のタブ
- http://localhost/をリクエストすると、ブラウザに1桁の数字が表示されます。しかし、 サーバのコンソールには、2 または3つの要求があることが示されているので、それに応じて2または3の数字 が表示されます。
私はたくさんのことを知りましたが、これについては満足のいく答えが得られません。
すべての考え/説明は高く評価されます。 :)
Javaにする必要はありますか? Mac、Windows、Linux上のUSBドライブから実行されるRubyの超小型ウェブサーバです。 Pinky:http://yellosoft.us/index.php?id=86 – mcandre
はい、私はjavaを使用しています。任意のJavaリンク:-)。 – mogli