Java初心者です。Webサーバもどきを作ろうと思っています。それで講師の方から雛形のプログラムを頂いたのですが現在だと指定したファイルがみつからなかったときにいきなり回線を切断するという乱暴なプログラムになってしまっています。ちゃんとエラーコードとして "HTTP/1.0 404 NotFound\r\n\r\n" のようなものを返すようにしたいのですがプログラムをどのようにかえればよろしいでしょうか。
意見をいただけると幸いです。
Java
1 import java.io.*; 2 import java.net.*; 3 4 public class rp9_2 { 5 public static void main(String args[]) { 6 try{ 7 ServerSocket ss = new ServerSocket(12354); 8 while(true) { 9 Socket s = ss.accept(); 10 InputStream instream = s.getInputStream(); 11 InputStreamReader isreader = new InputStreamReader(instream); 12 BufferedReader bfreader = new BufferedReader(isreader); 13 14 String theLine; 15 theLine = bfreader.readLine(); 16 theLine = theLine.substring(theLine.indexOf(" ")+1); 17 theLine = theLine.substring(0,theLine.indexOf(" ")); 18 theLine = theLine.substring(theLine.indexOf("/")+1); 19 System.out.print("filename: " + theLine + "\n"); 20 File theFile = new File(theLine); 21 if( theFile.exists() == false ) { 22 System.err.print("File does not exist:" + theLine + "\n"); 23 s.close(); 24 continue; 25 } 26 FileInputStream finstream = new FileInputStream(theFile); 27 InputStreamReader fisreader = new InputStreamReader(finstream); 28 BufferedReader fbfreader = new BufferedReader(fisreader); 29 30 OutputStream outstream = s.getOutputStream(); 31 OutputStreamWriter oswriter = new OutputStreamWriter(outstream); 32 BufferedWriter bfwriter = new BufferedWriter(oswriter); 33 PrintWriter pwriter = new PrintWriter(bfwriter); 34 35 pwriter.print("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"); 36 do { 37 theLine = fbfreader.readLine(); 38 if( theLine != null ) { 39 sleep(100); 40 pwriter.println(theLine); 41 pwriter.flush(); 42 } 43 } while( theLine != null ); 44 45 pwriter.flush(); 46 pwriter.close(); 47 } 48 } catch (Exception e) { 49 System.err.print(e); 50 } 51 } 52 53 static void sleep(long msec) { 54 try{ 55 Thread.sleep(msec); 56 }catch(InterruptedException ie) { 57 } 58 } 59 } 60 61
Web上にあるHTMLファイル(このHTMLファイルは身バレする可能性があるので伏せます。すみません)をjava ex_1 'URL'と入力し保存。
Linuxを用意しました。またプログラムをよんでBufferdreader,InputStreamreaderなどの語句を調べましたがうまく理解することができませんでした。テキストをまとめて読むというらしいのですがじゃあなんのテキストを?となってしまいました。
回答1件
あなたの回答
tips
プレビュー