nme.kr

Ch.19 네트워크

네트워크 개요

네트워크 관련 클래스

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());
		}

	}

}

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());
		}

	}

}

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());
		}

	}

}

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) {}
		}

	}

}

TCP 소켓 프로그래밍

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());
			}
		}
	}
}

UDP 소켓 프로그래밍

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());
			}
		}
	}
}

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());
			}
		}
	}
}