0

こんにちは、 リンク 1 リンク 2を参照したマルチスレッド Web サーバーを作成しようとしています。

import java.net.*;
import java.io.*;
public class WebServer {

    ServerSocket server;
    public WebServer() {
        try {
            server=new ServerSocket(3000);
        } catch (IOException ex) {
            System.out.println("exc in const "+ex.getMessage());
        }
    }
    Socket client;
    BufferedReader br;
    Thread t=new Thread(new Runnable(){
                @Override
                public void run() {
                    try{
                        System.out.println(br.readLine());                    
                    }
                    catch(Exception e){
                        System.out.println("exc is "+e);
                    }
                } 
            });
    public void RUN(){

         while(true){
            try {
                client=server.accept();
                   System.out.println(client.getPort());
                if(client!=null){
                   r=new BufferedReader(new InputStreamReader(client.getInputStream()));
                   t.start();
                }
            } catch (IOException ex) {
                System.out.println("ex is "+ex.getMessage());
            }
         }
    }
    public static void main(String[] args)  {
        WebServer webserver=new WebServer();
       try {
                webserver.RUN();
            } catch (Exception e) {
            System.out.println("main "+e);
        }          
    }
}

上記のコードでは、スレッドの Illegal Access Exception が発生し続けるので、なぜこの例外が発生し続けるのでしょうか ブラウザーで複数のタブを開き、localhost:3000 を開きたい場合、サーバーは http 要求とポート番号を出力する必要がありますが、これは最初の場合にのみ発生します他ではなくクライアントが illegalThreadAccess Exception を示し、プログラムが終了する

ウェブブラウザでコンテンツを表示する方法を説明しているページがあれば、大いに感謝します。

4

1 に答える 1