10 wellknow ports URL 20 URL URL home

  • Slides: 61
Download presentation

포트 10 잘 알려진 포트(well-know ports)

포트 10 잘 알려진 포트(well-know ports)

URL 객체 생성 방법 20 � 절대 경로로 URL 객체 생성 URL home. Page

URL 객체 생성 방법 20 � 절대 경로로 URL 객체 생성 URL home. Page = new URL("http: //news. hankooki. com"); � 상대 경로로 URL 객체 생성 URL opinion = new URL(home. Page, "opinion/editorial. htm"); opinion이라는 URL은 결국 다음 주소 의미 "http: //news. hankooki. com/opinion/editorial. htm" 잘못된 주소의 URL을 입력하면 Malformed. URLException 예외 발 생

URL 파싱하기 21 URL 클래스를 이용하여 URL을 구성하는 프로토콜 이름, 호스트 주소, 포트 번호

URL 파싱하기 21 URL 클래스를 이용하여 URL을 구성하는 프로토콜 이름, 호스트 주소, 포트 번호 등 각 부분을 파싱해보자 import java. net. *; public class Parse. URL { public static void main(String[] args) { URL opinion = null; URL home. Page = null; try { home. Page = new URL("http: //news. hankooki. com: 80"); // 절대 경로로 URL 객체 생성 opinion = new URL(home. Page, “opinion/editorial. htm"); // 상대 경로로 URL 객체 생성 } catch (Malformed. URLException e) { System. out. println("잘못된 URL입니다. "); } System. out. println("protocol = " + opinion. get. Protocol()); // 프로토콜 출력 System. out. println("host = " + opinion. get. Host()); // 호스트 이름 출력 System. out. println("port = " + opinion. get. Port()); // 포트 번호 출력 System. out. println("path = " + opinion. get. Path()); // 경로 부분 출력 System. out. println("filename = " + opinion. get. File()); // 파일 이름 출력 } } protocol = http host = news. hankooki. com port = 80 path = /opinion/editorial. htm filename = /opinion/editorial. htm

URL 주소에서 데이터 읽기 23 http 프로토콜로 www. nate. com 사이트에 접속한 뒤 www.

URL 주소에서 데이터 읽기 23 http 프로토콜로 www. nate. com 사이트에 접속한 뒤 www. nate. com에서 보 내주는 웹 페이지를 받아보자. import java. net. *; import java. io. *; public class URLRead { public static void main(String[] args) { try { // URL 객체 생성 URL a. URL = new URL("http: //www. nate. com"); // URL 객체에서 입력 스트림 생성 Buffered. Reader in = new Buffered. Reader(new Input. Stream. Reader( a. URL. open. Stream())); String input. Line; } } while ((input. Line = in. read. Line()) != null) // 한행 씩 읽음 System. out. println(input. Line); in. close(); } catch (IOException e) { System. out. println("URL에서 데이터를 읽는 중 오류가 발생했습니다. "); }

URLConnection 클래스 24 URLConnection 클래스 � � 주어진 원격지의 주소 URL에 네트워크 접속 후

URLConnection 클래스 24 URLConnection 클래스 � � 주어진 원격지의 주소 URL에 네트워크 접속 후 데이터를 보내거 나 받을 수 있도록 하는 기능 URL 객체 생성 방법 URL. open. Connection() 이용 URL a. URL = new URL("http: //www. naver. com"); URLConnection uc = a. URL. open. Connection(); // 원격지와 연결한다. URLConnection 생성자 이용 URL a. URL = new URL("http: //www. naver. com"); URLConnection uc = new URLConnection(a. URL); uc. connect(); // 원격지와 연결한다. 연결하기 전에 여러 가지 인자들과 요청과 관련된 속성들을 설정 가능

URLConnection 클래스 주요 메소드 25 메소드 설명 abstract void connect() URL에 의해 참조되는 외부

URLConnection 클래스 주요 메소드 25 메소드 설명 abstract void connect() URL에 의해 참조되는 외부 리소스와 통신 연결 설정 Object get. Content() URL 연결에서 컨텐트를 가져옴 String get. Content. Encoding() 컨텐트 인코딩 필드를 반환 int get. Content. Length() 컨텐트 길이 필드 반환 String get. Content. Type() 컨텐트 타입 필드 반환 boolean get. Do. Input() URLConnection 객체의 do. Input 필드 값 반환 boolean get. Do. Output() URLConnection 객체의 do. Output 필드 값 반환 Input. Stream get. Input. Stream() 설정된 연결에서 데이터를 읽을 입력 스트림 반환 Output. Stream get. Output. Stream() 설정된 연결로 데이터를 출력할 출력 스트림 반환 URL get. URL() URLConnection 객체의 URL 필드 값 반환 void set. Do. Input(boolean do. Input) URLConnection 객체의 do. Input 필드 값 설정 void set. Do. Output(boolean do. Output) URLConnection 객체의 do. Output 필드 값 설정 do. Input 필드가 true로 설정되면 URLConnection 객체로 표현되는 URL 연결 이 입력을 위해 사용됨을 의미. do. Output 필드가 true로 설정되면 출력을 위해 사용됨을 의미

URLConnection으로 원격지에서 데이터 읽기 27 URLConnection 객체를 이용하여 www. daum. net에 연결하여 데이터를 읽고

URLConnection으로 원격지에서 데이터 읽기 27 URLConnection 객체를 이용하여 www. daum. net에 연결하여 데이터를 읽고 화면에 출력하는 프로그램을 작성하라. import java. io. *; import java. net. *; public class URLConnection. Reader { public static void main(String[] args) { try { // URL 객체 생성 URL a. URL = new URL("http: //www. daum. net"); // URL 객체에서 URLConnection 객체 생성 URLConnection uc = a. URL. open. Connection(); Buffered. Reader in = new Buffered. Reader(new Input. Stream. Reader( uc. get. Input. Stream())); // 입력 스트림 생성 String input. Line; } } while ((input. Line = in. read. Line()) != null) // 한행 씩 읽음 System. out. println(input. Line); in. close(); } catch (IOException e) { System. out. println("URL에서 데이터를 읽는 중 오류가 발생했습니다. "); }

서버 프로그램 Calc. Server. Ex. java try { listener = new Server. Socket(9999); //

서버 프로그램 Calc. Server. Ex. java try { listener = new Server. Socket(9999); // 서버 소켓 생성 System. out. println("연결을 기다리고 있습니다. . . "); socket = listener. accept(); // 클라이언트로부터 연결 요청 대기 System. out. println("연결되었습니다. "); in = new Buffered. Reader( new Input. Stream. Reader(socket. get. Input. Stream())); out = new Buffered. Writer( new Output. Stream. Writer(socket. get. Output. Stream())); while (true) { String input. Message = in. read. Line(); if (input. Message. equals. Ignore. Case("bye")) { System. out. println("클라이언트에서 연결을 종료하였음"); break; // "bye"를 받으면 연결 종료 } System. out. println(input. Message); // 받은 메시지를 화면에 출력 String res = calc(input. Message); // 계산. 계산 결과는 res out. write(res + "n"); // 계산 결과 문자열 전송 out. flush(); } } catch (IOException e) { System. out. println(e. get. Message()); } finally { try { if(socket != null) socket. close(); // 통신용 소켓 닫기 if(listener != null) listener. close(); // 서버 소켓 닫기 } catch (IOException e) { System. out. println("클라이언트와 채팅 중 오류가 발생했습니다. "); } } import java. io. *; import java. net. *; import java. util. *; public class Calc. Server. Ex { public static String calc(String exp) { String. Tokenizer st = new String. Tokenizer(exp, " "); if (st. count. Tokens() != 3) return "error"; String res=""; int op 1 = Integer. parse. Int(st. next. Token()); String opcode = st. next. Token(); int op 2 = Integer. parse. Int(st. next. Token()); switch (opcode) { case "+": res = Integer. to. String(op 1 + op 2); break; case "-": res = Integer. to. String(op 1 - op 2); break; case "*": res = Integer. to. String(op 1 * op 2); break; default : res = "error"; } return res; } public static void main(String[] args) { Buffered. Reader in = null; Buffered. Writer out = null; Server. Socket listener = null; Socket socket = null; } } 52

클라이언트 프로그램 Calc. Client. Ex. java 53 import java. io. *; import java. net.

클라이언트 프로그램 Calc. Client. Ex. java 53 import java. io. *; import java. net. *; import java. util. *; public class Calc. Client. Ex { public static void main(String[] args) { Buffered. Reader in = null; Buffered. Writer out = null; Socket socket = null; Scanner scanner = new Scanner(System. in); try { socket = new Socket("localhost", 9999); in = new Buffered. Reader(new Input. Stream. Reader(socket. get. Input. Stream())); out = new Buffered. Writer(new Output. Stream. Writer(socket. get. Output. Stream())); while (true) { System. out. print("계산식(빈칸으로 띄어 입력, 예: 24 + 42)>>"); // 프롬프트 String output. Message = scanner. next. Line(); // 키보드에서 수식 읽기 if (output. Message. equals. Ignore. Case("bye")) { out. write(output. Message+"n"); // "bye" 문자열 전송 out. flush(); break; // 사용자가 "bye"를 입력한 경우 서버로 전송 후 연결 종료 } out. write(output. Message + "n"); // 키보드에서 읽은 수식 문자열 전송 out. flush(); String input. Message = in. read. Line(); // 서버로부터 계산 결과 수신 System. out. println("계산 결과: " + input. Message); } } catch (IOException e) { System. out. println(e. get. Message()); } finally { try { scanner. close(); if(socket != null) socket. close(); // 클라이언트 소켓 닫기 } catch (IOException e) { System. out. println("서버와 채팅 중 오류가 발생했습니다. "); } }

UDP 서버 58

UDP 서버 58