Иллюстрированный самоучитель по Java
[an error occurred while processing this directive]

Работа по протоколу TCP - часть 3


System.err.println("File not found, code = " + code);

System.exit (0); 

while ((line = br.readLine()) != null)

System.out.println{line); 

sock.close(); 

}catch(Exception e){

System.err.println(e); 

}

Закрытие потоков ввода/вывода вызывает закрытие сокета. Обратно, закрытие сокета закрывает и потоки.

Для создания сервера в пакете java.net есть класс serversocket. В конструкторе этого класса указывается номер порта

ServerSocket(int port)

Основной метод этого класса accept () ожидает поступления запроса. Когда запрос получен, метод устанавливает соединение с клиентом и возвращает объект класса socket, через который сервер будет обмениваться информацией с клиентом.

Листинг 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(""))




Содержание  Назад  Вперед


[an error occurred while processing this directive]