Работа по протоколу TCP
Листинг 19.3. Упрощенный HTTP-клиент.
import java.net.*; import java.io.*; import java.util.*; class Client{ public static void main(String[] args){ if (args.length!= 3){ System.err.println("Usage: Client host port file"); System.exit(0); } String host = args[0]; int port = Integer.parselnt(args[1]); String file = args[2]; try{ Socket sock = new Socket(host, port); PrintWriter pw = new PrintWriter(new OutputStreamWriter( sock.getOutputStreamf)), true); pw.println("POST " + file + " HTTP/1.l\n"); BufferedReader br = new BufferedReader(new InputStreamReader( sock.getlnputStream())); String line = null; line = br.readLine(); StringTokenizer st = new StringTokenizer(line); String code = null; if ((st.countTokens() >= 2) && st.nextToken().equals("POST")){ if ((code = st.nextToken())!= "200") { 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, через который сервер будет обмениваться информацией с клиентом.