본문으로 바로가기

java 네트워크

category 프로그래밍/java 2017. 9. 21. 19:46

java 네트워크


JAVA는 다른 언어에 비해 네트워크 기능이 뛰어난 언어 입니다.

고수준의 언어답게 네트워크 안에서 이루어 지는 깊은 지식에 대해서 개발자는 모두 알 필요가 없습니다. , 많은 클래스가 제공되고, 우리는 단지 유용한 클래스들을 사용하기만 하면 됩니다.

java.net 패키지의 몇 가지 클래스들에 대해서 살펴보도록 합니다.


InetAddress


호스트의 IP주소를 비롯한 네트워크상의 정보를 얻어오는 클래스 입니다. (31_2_ex1_networkex)


package com.javalec.networkex;


import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.InetAddress;



public class InetAdressEx {


public InetAdressEx() {

System.out.println("Host 이름을 입력 하세요.");

BufferedReader scanner = new BufferedReader(new InputStreamReader(System.in)); 입력받을 수 있는 스트림 객체 생성

try {

InetAddress inetAddress = InetAddress.getByName(scanner.readLine()); getbyname에 의해 inetaddress객체 생성

System.out.println("Computer NAME : " + inetAddress.getHostName()); 호스트네임 출력

System.out.println("Computer IP : " + inetAddress.getHostAddress()); 호스트주소ip 출력

} catch (Exception e) {

System.out.println(e.getMessage());  


e. getMassage() : 에러 이벤트와 함께 들어오는 메세지 출력

e. toString() : 에러 이벤트의 toString()을 호출해서 간단히 에러메세지를 낸다. 

e.printstackTrac() : 에러메세지의 발생 근원지를 찾아 단계 별로 에러 메세지 출력


}

}

}



package com.javalec.networkex;

public class MainClass {

public static void main(String[] args) {
new InetAdressEx();
}
}

실행결과

Host 이름을 입력 하세요.

www.naver.com

Computer NAME : www.naver.com

Computer IP : 202.179.177.21



URLConnection

URL 클래스 : DNS를 통한 IP정보를 이용하여 URL객체를 만들 후 네트워크 접속 및 URL정보를 얻어온다. 

URLConnection클래스 : url 객체로부터 생성되며 url클래스의 oppenConnextion()메소드를 이용



package com.javalec.ex;

import java.io.BufferedReader;

import java.io.FileWriter;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

import java.util.Scanner;



public class URLConEx {


public URLConEx() {

String code = null;

System.out.println("웹 주소를 입력 하세요.");

Scanner scanner = new Scanner(System.in);

String address = scanner.next();

try {

URL url = new URL(address);  Url클래스 생성(네트워크 접속및 url정보를 가져온다)

URLConnection con = url.openConnection(); url객체를 통해 통신을 연결한다. 

BufferedReader webData = new BufferedReader(new InputStreamReader(con.getInputStream())); 


FileWriter fw = new FileWriter("C:\\Users\\longdi\\Documents\\신입SW인력을 위한 실전 자바 동영상과정_예제_31강\\file.html", false);

while ((code = webData.readLine()) != null) {

fw.write(code);

}

System.out.println("The End"); The End출력

fw.close();

webData.close();

} catch (Exception e) {

e.printStackTrace();

}

}



URL클래스 객체생성----> URLconnection객체생성 ----->데이터(문자열)를 읽을 수 있도록 함 -----> 파일 기록 클래스 생성...

실제로 html이라는 파일이 만들어진다. 


실행결과


웹 주소를 입력 하세요.

http://google.com

The End




Socket


네트워크 상에서 서로 다른 호스트 사이의 통신을 위한 수단



1)Server에서 ServerSocket을 만들고, 클라이언트의 요청을 기다림.
2)Client에서 Socket을 만들고, I/O Stream을 만들어 Server로 요청을 함.
3)Server에서 Client의 요청을 받아 Socket을 만들고, , I/O Stream을 만.
4)통신함.
5)Socket 닫음.



서버


package com.javalec.ex;


import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;


public class MakeServerSocket {


서버는 소켓을 2개만들어야함

ServerSocket serverSocket = null;

Socket socket = null;

PrintWriter writer = null;

BufferedReader reader = null;

String lineStr;

public MakeServerSocket() {

try {

serverSocket = new ServerSocket(2000);  2000포트 사용

while (true) {

socket = serverSocket.accept();

System.out.println("Client 요청");

입출력 스트림 객체 생성

writer = new PrintWriter(socket.getOutputStream(), true); 

reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

while ((lineStr = reader.readLine()) != null) { 문자열 읽어들인것을 lineStr로 저장.

null값이 아닐때까지

writer.write(lineStr); 서버가 클라이언트에 문자 반환

System.out.println("input : " + lineStr);

}

writer.close(); 출력 문자스트림 종료

reader.close(); 입력 문자스트림 종료

socket.close(); 소켓 통신 종료

}

} catch (Exception e) {}

}

public static void main(String[] args) {

new MakeServerSocket();

}

}




클라이언트



package com.javalec.ex;


import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;  클라이언트는 소켓을 하나만 만들어주면 됨... 데이터만 보낼거니깐


public class MakeClientSocket {


Socket socket = null;

PrintWriter writer = null;

BufferedReader reader = null;

public MakeClientSocket() {

try {

socket = new Socket("localhost", 2000);

writer = new PrintWriter(socket.getOutputStream(), true);

reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String str = null;

BufferedReader sReader = new BufferedReader(new InputStreamReader(System.in));

while ((str = sReader.readLine()) != null) {

writer.println(str);

System.out.println("output : " + str);

}

writer.close();

reader.close();

sReader.close();

socket.close();

} catch (Exception e) {}

}

public static void main(String[] args) {

new MakeClientSocket();

}

}




'프로그래밍 > java' 카테고리의 다른 글

내부클래스  (1177) 2017.11.11
Enum  (1185) 2017.11.11
컬렉션  (1214) 2017.09.19
다양한 애플릿  (1212) 2017.09.19
애플릿(애플릿, 애플릿 뷰어)  (1194) 2017.09.16