Сетевые средства Java


Листинг 19.4. Упрощенный HTTP-сервер



Листинг 19.4.

Упрощенный HTTP-сервер



import j ava.net.*;

import java.io.*;

import j ava.uti1.*;

class Server!

public static void main(String[] args){ 

try{

ServerSocket ss = new ServerSocket(Integer.parselnt(args[0])); 

while (true)

new HttpConnect(ss.accept()); 

}catch(ArraylndexOutOfBoundsException ae){ 

System.err.println("Usage: Server port"); 

System.exit(0); 

}catch(IOException e){

System.out.println(e); 

}

class HttpConnect extends Thread{ 

private Socket sock;

HttpConnect(Socket s) { 

sock = s;

setPriority(NORM_PRIORITY - 1); 

start {) ; 

}

public void run(){ 

try{

PrintWriter pw = new PrintWriter(new OutputStreamWriter(

sock.getOutputStream()}, true); 

BufferedReader br = new BufferedReader(new InputStreamReader(

sock.getlnputStream() ) ) ; 

String req = br.readLine(); 

System.out.println("Request: " + req); 

StringTokenizer st = new StringTokenizer(req); 

if ((st.countTokens() >= 2) && st.nextToken().equals("POST")){ 

if ((req = st.nextToken()).endsWith("/") II req.equals(""))

req += "index.html"; 

try{

File f = new File(req); 

BufferedReader bfr =

new BufferedReader(new FileReader(f)); 

char[] data = new char[(int)f.length()]; 

bfr.read(data);

pw.println("HTTP/1.1 200 OK\n"); 

pw.write(data); 

pw.flush(); 

}catch(FileNotFoundException fe){

pw.println("HTTP/1.1 404 Not FoundXn"); 

}catch(lOException ioe){

System.out.println(ioe); 

}

}else pw.println("HTTP/l.l 400 Bad RequestW); 

sock.close(); 

}catch(IOException e){

System.out.println(e); 

}

Вначале следует запустить сервер, указав номер порта, например:

Java Server 8080

Затем надо запустить клиент, указав IP-адрес или доменное имя хоста, номер порта и имя файла:

Java Client localhost 8080 Server.Java

Сервер отыскивает файл Server.java в своем текущем каталоге и посылает его клиенту. Клиент выводит содержимое этого класса в стандартный вывод и завершает работу. Сервер продолжает работать, ожидая следующего запроса.

Замечание


Замечание

Программы, реализующие стек протоколов TCP/IP, всегда создают так называемую "петлю" с адресом 127.0.0.1 и доменным именем localhost. Это адрес самого компьютера. Он используется для отладки приложений клиент-сервер. Вы можете запускать клиент и сервер на одной машине, пользуясь этим адресом.

 







- Начало -  - Назад -  - Вперед -