nme.kr

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
프로그램:java:ㄴhomework:book_source:ch19 [2022/01/04 11:32]
clayeryan@gmail.com 만듦
프로그램:java:ㄴhomework:book_source:ch19 [2023/07/13 17:29] (현재)
clayeryan@gmail.com ↷ 문서가 programmer:java:ㄴhomework:book_source:ch19에서 프로그램:java:ㄴhomework:book_source:ch19(으)로 이동되었습니다
줄 1: 줄 1:
-====== Chapter19 네트워크 ======+====== Ch.19 네트워크 ====== 
 +=====네트워크 개요===== 
 + 
 +=====네트워크 관련 클래스 ===== 
 +<code java> 
 +package chapter19; 
 + 
 +import java.net.InetAddress; 
 +import java.net.UnknownHostException; 
 + 
 +public class InetAddressEx { 
 + 
 + public static void main(String[] args) { 
 +  
 + try { 
 + // getByName메서드로 InetAddress 객체 생성 
 + InetAddress ip = InetAddress.getByName("www.google.co.kr"); 
 + System.out.println("hostname:" + ip.getHostName()); 
 + System.out.println("ip :" + ip.getHostAddress()); 
 +  
 + // getAllByName메서드로 InetAddress 객체배열 생성 
 + InetAddress[] ips =  
 + InetAddress.getAllByName("www.google.co.kr"); 
 + for (InetAddress i : ips) { 
 + System.out.println("ip 주소 :" + i); 
 +
 +  
 + // ip 주소값을 byte[] 배열로 리턴 
 + byte[] ipAddr = ip.getAddress(); 
 + // byte 자료형의 표현 범위 : 128 ~ 127 
 + // 127 이상의 값은 음수로 표현됨 
 + for (byte b : ipAddr) { 
 + System.out.print(((b < 0) ? b + 256 : b) + "."); 
 +
 + System.out.println(); 
 +  
 + // getLocalHost 메서드로 InetAddress 객체 생성 호출 
 + InetAddress local = InetAddress.getLocalHost(); 
 + System.out.println("내컴퓨터 IP:" + local); 
 +  
 + // getByAddress 메서드로 InetAddress 객체 생성 호출 
 + InetAddress ip2 = InetAddress.getByAddress(ips[0].getAddress()); 
 + System.out.println(ips[0].getHostAddress() + " 주소 :" + ip2); 
 +  
 + } catch (UnknownHostException e) { 
 + System.out.println(e.getMessage()); 
 +
 + 
 +
 + 
 +
 +</code> 
 + 
 +<code java> 
 +package chapter19; 
 + 
 +import java.io.IOException; 
 +import java.io.InputStreamReader; 
 +import java.io.Reader; 
 +import java.net.MalformedURLException; 
 +import java.net.URL; 
 + 
 +public class URLEx { 
 + 
 + public static void main(String[] args) { 
 +  
 + try { 
 + URL url = null; 
 + url = new URL("https://www.egovframe.go.kr/EgovIntro.jsp?menu=1&submenu=1"); 
 + System.out.println("authority : " + url.getAuthority()); 
 + System.out.println("content : " + url.getContent()); 
 + System.out.println("protocol : " + url.getProtocol()); 
 + System.out .println("host : " + url.getHost()); 
 + System.out.println("port : " + url.getPort()); 
 + System.out.println("path : " + url.getPath()); 
 + System.out.println("file : " + url.getFile()); 
 + System.out.println("query : " + url.getQuery()); 
 + // URL 을 통해서 정보 받기 
 + int data = 0; 
 + try { 
 + Reader is = new InputStreamReader(url.openStream()); 
 + while ((data = is.read()) != -1) { 
 + System.out.print((char) data); 
 +
 + System.out.println(); 
 + } catch (IOException e) { 
 + e.printStackTrace(); 
 +
 +  
 + } catch (Exception e) { 
 + System.out.println(e.getMessage()); 
 +
 + 
 +
 + 
 +
 + 
 +</code> 
 + 
 +<code java> 
 +package chapter19; 
 + 
 +import java.net.URL; 
 +import java.net.URLConnection; 
 + 
 +public class URLConnectionEx { 
 + 
 + public static void main(String[] args) { 
 +  
 + URL url = null; 
 + String address =  
 + "https://www.egovframe.go.kr/EgovIntro.jsp?menu=1&submenu=1"; 
 + try { 
 + url = new URL(address); 
 + URLConnection conn = url.openConnection(); 
 + System.out.println("conn.toString():" + conn); 
 + System.out.println("getAllowUserInteraction():" + conn.getAllowUserInteraction()); 
 + System.out.println("getConnectTimeout():" + conn.getConnectTimeout()); 
 + System.out.println("getContent():" + conn.getContent()); 
 + System.out.println("getContentEncoding():" + conn.getContentEncoding()); 
 + System.out.println("getContentLengt h():" + conn.getContentLength()); 
 + System.out.println("getContentType():" + conn.getContentType()); 
 + System.out.println("getDate():" + conn.getDate()); 
 + System.out.println("getDefaultAllowUserInteraction():"
 + conn.getDefaultAllowUserInteraction()); 
 + System.out.println("getDefaultUseCaches():" + conn.getDefaultUseCaches()); 
 + System.out.println("getDoInput():" + conn.getDoInput()); 
 + System.out.println("getDoOutput():" + conn.getDoOutput()); 
 + System.out.println("getExpiration():" + conn.getExpiration()); 
 + System.out.println("getHeaderFields():" + conn.getHeaderFields()); 
 + System.out.println("getIfModifiedSince():" + conn.getIfModifiedSince()); 
 + System.out.println("getLastModified():" + conn.getLastModified()); 
 + System.out.println("getReadTimeout():" + conn.getReadTimeout()); 
 + System.out.println("getURL():" + conn.getURL()); 
 + System.out.println("getUseCaches():" + conn.getUseCaches()); 
 +  
 +  
 + } catch (Exception e) { 
 + System.out.println(e.getMessage()); 
 +
 + 
 +
 + 
 +
 + 
 +</code> 
 + 
 +<code java> 
 +package chapter19; 
 + 
 +import java.io.BufferedReader; 
 +import java.io.InputStreamReader; 
 +import java.net.URL; 
 + 
 +public class URLConnectionEx2 { 
 + 
 + public static void main(String[] args) { 
 +  
 + URL url = null; 
 + String address =  
 + "https://www.egovframe.go.kr/EgovIntro.jsp?menu=1&submenu=1"; 
 + BufferedReader br = null; 
 + String readline = ""; 
 +  
 + try { 
 + url = new URL(address); 
 + br = new BufferedReader( 
 + new InputStreamReader(url.openStream())); 
 +  
 + while ((readline = br.readLine()) != null) { 
 + System.out.println(readline); 
 +
 +  
 +  
 + } catch (Exception e) { 
 + System.out.println(e.getMessage()); 
 + } finally { 
 + try { br.close(); }catch(Exception e) {} 
 +
 + 
 +
 + 
 +
 + 
 +</code> 
 +=====TCP 소켓 프로그래밍===== 
 +<code java> 
 +package chapter19; 
 + 
 +import java.io.BufferedReader; 
 +import java.io.DataOutputStream; 
 +import java.io.FileReader; 
 +import java.io.IOException; 
 +import java.io.InputStreamReader; 
 +import java.io.PrintWriter; 
 +import java.net.ServerSocket; 
 +import java.net.Socket; 
 + 
 +public class ServerEx { 
 + 
 + public static void main(String[] args) { 
 +  
 + // 소켓 생성 
 + ServerSocket server = null; 
 +  
 + try { 
 +  
 + server = new ServerSocket(9999); 
 +  
 + // 무한 반복 (클라이언트 접속 대기) 
 + while(true) { 
 + System.out.println("클라이언트 접속 대기"); 
 + Socket client = server.accept(); 
 + System.out.println("스레드 생성"); 
 + HttpThread ht = new HttpThread(client); 
 + ht.start(); 
 +
 + }catch (Exception e) { 
 + System.out.println(e.getMessage()); 
 + } finally { 
 + try { 
 + server.close(); 
 + } catch (Exception e) { 
 + System.out.println(e.getMessage()); 
 +
 +
 + 
 +
 + 
 +
 + 
 +class HttpThread extends Thread { 
 + private Socket client; 
 + BufferedReader br; 
 + PrintWriter pw; 
 + HttpThread(Socket client) { 
 + this.client = client; 
 + try { 
 + br = new BufferedReader (new InputStreamReader(client.getInputStream())); 
 + pw = new PrintWriter(client.getOutputStream()); 
 + } catch(IOException e) { 
 + System.out.println(e.getMessage()); 
 +
 +
 + public void run() { 
 + BufferedReader fbr = null; 
 + DataOutputStream outToClient = null; 
 + try { 
 + String line = br.readLine(); 
 + //line : GET / HTTP/1.1 
 + System.out.println("Http Header :"+line); 
 + int start = line.indexOf("/") + 1; 
 + int end = line.lastIndexOf("HTTP") - 1; 
 + String fileName=line.substring(start,end); 
 + if(fileName.equals("")) { 
 + fileName="index.html"; 
 +
 + System.out.println("사용자 요청 파일 :"+fileName); 
 + fbr = new BufferedReader (new FileReader(fileName)); 
 + String fileLine = null; 
 + pw.println("HTTP/1.0 200 Document Follows \r\n"); 
 + while((fileLine = fbr.readLine())!=null){ 
 + pw.println(fileLine); 
 + pw.flush(); 
 +
 + } catch(IOException e) { 
 + System.out.println(e.getMessage()); 
 + } finally { 
 + try { 
 + if(br != null) br.close(); 
 + if(pw != null) pw.close(); 
 + if(client != null) client.close(); 
 + } catch(IOException e) { 
 + System.out.println(e.getMessage()); 
 +
 +
 +
 +
 +</code> 
 +=====UDP 소켓 프로그래밍===== 
 +<code java> 
 +package chapter19; 
 + 
 +import java.io.BufferedReader; 
 +import java.io.DataOutputStream; 
 +import java.io.FileReader; 
 +import java.io.IOException; 
 +import java.io.InputStreamReader; 
 +import java.io.PrintWriter; 
 +import java.net.ServerSocket; 
 +import java.net.Socket; 
 + 
 +public class ServerEx { 
 + 
 + public static void main(String[] args) { 
 +  
 + // 소켓 생성 
 + ServerSocket server = null; 
 +  
 + try { 
 +  
 + server = new ServerSocket(9999); 
 +  
 + // 무한 반복 (클라이언트 접속 대기) 
 + while(true) { 
 + System.out.println("클라이언트 접속 대기"); 
 + Socket client = server.accept(); 
 + System.out.println("스레드 생성"); 
 + HttpThread ht = new HttpThread(client); 
 + ht.start(); 
 +
 + }catch (Exception e) { 
 + System.out.println(e.getMessage()); 
 + } finally { 
 + try { 
 + server.close(); 
 + } catch (Exception e) { 
 + System.out.println(e.getMessage()); 
 +
 +
 + 
 +
 + 
 +
 + 
 +class HttpThread extends Thread { 
 + private Socket client; 
 + BufferedReader br; 
 + PrintWriter pw; 
 + HttpThread(Socket client) { 
 + this.client = client; 
 + try { 
 + br = new BufferedReader (new InputStreamReader(client.getInputStream())); 
 + pw = new PrintWriter(client.getOutputStream()); 
 + } catch(IOException e) { 
 + System.out.println(e.getMessage()); 
 +
 +
 + public void run() { 
 + BufferedReader fbr = null; 
 + DataOutputStream outToClient = null; 
 + try { 
 + String line = br.readLine(); 
 + //line : GET / HTTP/1.1 
 + System.out.println("Http Header :"+line); 
 + int start = line.indexOf("/") + 1; 
 + int end = line.lastIndexOf("HTTP") - 1; 
 + String fileName=line.substring(start,end); 
 + if(fileName.equals("")) { 
 + fileName="index.html"; 
 +
 + System.out.println("사용자 요청 파일 :"+fileName); 
 + fbr = new BufferedReader (new FileReader(fileName)); 
 + String fileLine = null; 
 + pw.println("HTTP/1.0 200 Document Follows \r\n"); 
 + while((fileLine = fbr.readLine())!=null){ 
 + pw.println(fileLine); 
 + pw.flush(); 
 +
 + } catch(IOException e) { 
 + System.out.println(e.getMessage()); 
 + } finally { 
 + try { 
 + if(br != null) br.close(); 
 + if(pw != null) pw.close(); 
 + if(client != null) client.close(); 
 + } catch(IOException e) { 
 + System.out.println(e.getMessage()); 
 +
 +
 +
 +
 +</code> 
 + 
 +<code java> 
 +package chapter19; 
 + 
 +import java.io.BufferedReader; 
 +import java.io.DataOutputStream; 
 +import java.io.FileReader; 
 +import java.io.IOException; 
 +import java.io.InputStreamReader; 
 +import java.io.PrintWriter; 
 +import java.net.ServerSocket; 
 +import java.net.Socket; 
 + 
 +public class ServerEx { 
 + 
 + public static void main(String[] args) { 
 +  
 + // 소켓 생성 
 + ServerSocket server = null; 
 +  
 + try { 
 +  
 + server = new ServerSocket(9999); 
 +  
 + // 무한 반복 (클라이언트 접속 대기) 
 + while(true) { 
 + System.out.println("클라이언트 접속 대기"); 
 + Socket client = server.accept(); 
 + System.out.println("스레드 생성"); 
 + HttpThread ht = new HttpThread(client); 
 + ht.start(); 
 +
 + }catch (Exception e) { 
 + System.out.println(e.getMessage()); 
 + } finally { 
 + try { 
 + server.close(); 
 + } catch (Exception e) { 
 + System.out.println(e.getMessage()); 
 +
 +
 + 
 +
 + 
 +
 + 
 +class HttpThread extends Thread { 
 + private Socket client; 
 + BufferedReader br; 
 + PrintWriter pw; 
 + HttpThread(Socket client) { 
 + this.client = client; 
 + try { 
 + br = new BufferedReader (new InputStreamReader(client.getInputStream())); 
 + pw = new PrintWriter(client.getOutputStream()); 
 + } catch(IOException e) { 
 + System.out.println(e.getMessage()); 
 +
 +
 + public void run() { 
 + BufferedReader fbr = null; 
 + DataOutputStream outToClient = null; 
 + try { 
 + String line = br.readLine(); 
 + //line : GET / HTTP/1.1 
 + System.out.println("Http Header :"+line); 
 + int start = line.indexOf("/") + 1; 
 + int end = line.lastIndexOf("HTTP") - 1; 
 + String fileName=line.substring(start,end); 
 + if(fileName.equals("")) { 
 + fileName="index.html"; 
 +
 + System.out.println("사용자 요청 파일 :"+fileName); 
 + fbr = new BufferedReader (new FileReader(fileName)); 
 + String fileLine = null; 
 + pw.println("HTTP/1.0 200 Document Follows \r\n"); 
 + while((fileLine = fbr.readLine())!=null){ 
 + pw.println(fileLine); 
 + pw.flush(); 
 +
 + } catch(IOException e) { 
 + System.out.println(e.getMessage()); 
 + } finally { 
 + try { 
 + if(br != null) br.close(); 
 + if(pw != null) pw.close(); 
 + if(client != null) client.close(); 
 + } catch(IOException e) { 
 + System.out.println(e.getMessage()); 
 +
 +
 +
 +
 +</code>