2020.11.05 고급자바 수업노트

 package kr.or.ddit.basic;


import java.net.InetAddress;

import java.net.UnknownHostException;


public class InetAddressTest {


public static void main(String[] args) throws UnknownHostException {

// InetAddress 클래스 => IP 주소를 다루기 위한 클래스 

// www.naver.com  의 IP 정보 가져오기 

InetAddress naverIp = InetAddress.getByName("www.naver.com");

System.out.println("hostName : " + naverIp.getHostName());

System.out.println("HostAddress : " + naverIp.getHostAddress());

System.out.println();

//자신의 컴퓨터의 IP 정보 가져오기 

InetAddress localIp = InetAddress.getLocalHost(); 

System.out.println("내 컴의 HostName : " + localIp.getHostName());

System.out.println("내 컴의 HostAddress : " + localIp.getHostAddress());

System.out.println();

//IP 주소가 여러개인 호스트의 정보 가져오기 

InetAddress[] navers = InetAddress.getAllByName("www.google.com"); 

for(InetAddress nip : navers) {

System.out.println(nip.toString());

}

}


}



-----------------------

package kr.or.ddit.basic;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpClient1 {

public static void main(String[] args) throws UnknownHostException, IOException {
//현재 자신의 컴퓨터를 나타내는 방법 
// 1) 원래의 IP 주소 : 192.168.48.2
// 2) 지정된 IP 주소 : 127.0.0.1  // 모든컴퓨터에서 자기자신 컴퓨터에 접속하는 주소 
// 3) 원래의 컴퓨터 이름 : 예) SEM 
// 4) 지정된 컴퓨터 이름 : localhost 
String serverIp = "localhost";
System.out.println(serverIp + " 서버에 연결 중입니다....");

//서버의 Ip 주소와 Port 번호를 지정하여 Socket 객체를 생성한다. 
// Socket 객체는 생성이 완료되면 해당 서버로 요청신호를 자동으로 보낸다. 
Socket socket = new Socket(serverIp, 7777); 
//이 부분은 서버와 연결이 완료된 이후의 처리 내용을 기술하면 된다. 
System.out.println("서버에 연결되었습니다.");
System.out.println();
//서버에서 보내온 메세지를 받아서 화면에 출력하기 
// Socket의 InputStream 객체 생성  ==> getInputStream() 메서드 이용 
InputStream is = socket.getInputStream(); 
DataInputStream dis = new DataInputStream(is); 
//서버가 보낸 자료를 읽어와서 출력한다. 
System.out.println("서버가 보낸 메세지 : " + dis.readUTF() );
System.out.println();
System.out.println("연결이 종료되었습니다.");
dis.close();
socket.close();
}

}



------------------

package kr.or.ddit.basic;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer1 {

public static void main(String[] args) throws IOException {
//TCP 소켓 통신을 위해 ServerSocket 객체를 생성한다. 
ServerSocket server = new ServerSocket(7777);

System.out.println("접속을 기다립니다....");
//accept 메서드 
// ==> 클라이언트에서 연결 요청이 올 때까지 계속 기다린다. 
// ==> 연결 요청이 오면 Socket 객체를 생성해서 클라이언트의 Socket 과 연결한다.  
Socket socket = server.accept(); 
//accept() 메서드 이후의 소스는 연결이 완료된 후에만 실행된다. 
System.out.println("클라이언트와 연결되었습니다.");
System.out.println();
System.out.println("접속한 클라이언트 정보");
System.out.println("IP 주소 : " + socket.getInetAddress().getHostAddress());
System.out.println("PORT 번호 : " + socket.getPort());
System.out.println();
System.out.println("연결된 서버 정보");
System.out.println("IP 주소 : " + socket.getLocalAddress());
System.out.println("port 번호 : " + socket.getLocalPort());
System.out.println();
//클라이언트에게 메세지 보내기 ==> 소켓의 OutputStream 객체를 이용해서 전송한다. 
OutputStream out = socket.getOutputStream(); // 소켓의 OutputStream 객체 구한다. 
DataOutputStream dout = new DataOutputStream(out); 
//메세지 전송 ==> 출력 명령으로 전송한다. 
dout.writeUTF("환영합니다. 어서오세요...");
System.out.println("메세지를 보냈습니다.");
//소켓과 연결 스트림 닫기 
dout.close();
socket.close();
server.close();
}

}


------------------


package kr.or.ddit.basic;

import java.net.MalformedURLException;
import java.net.URL;

public class URLTest01 {

public static void main(String[] args) throws MalformedURLException {
// URL 클래스 ==> 인터넷에 존재하는 서버들의 자원에 접근할 수 있는 주소를 다루는 클래스 
// http://ddit.or.kr:80/index.html?ttt=123

URL url = new URL ("http://ddit.or.kr:80/index.html?ttt=123");
//URL ur2 = new URL ("http", "ddit.or.kr",80, "index.html?ttt=123");
System.out.println("Protocol : " + url.getProtocol());
System.out.println("Host : " + url.getHost());
System.out.println("Port : " + url.getPort());
System.out.println("File : " + url.getFile());
System.out.println("Path : " + url.getPath());
System.out.println("Query : " + url.getQuery());
System.out.println();
System.out.println(url.toExternalForm());
System.out.println("http://ddit.or.kr:80/index.html?ttt=123");
/*
*  Protocol : http
    Host : ddit.or.kr
Port : 80
Path : /index.html
Query : ttt=123

*/
}

}



---------------



package kr.or.ddit.basic;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class URLTest02 {

public static void main(String[] args) throws IOException {
// URLConnection ==> 애플리케이션과 URL 간의 통신 연결을 위한 클래스
// 특정 서버의 정보와 파일 내용을 가져와 출력하는 예제
URL url = new URL("https://www.naver.com/index.html");
//URLConnection 객체 구하기 
URLConnection urlCon = url.openConnection();
//header 정보 가져오기 
Map <String, List<String>> headerMap = urlCon.getHeaderFields();
//headerMap 의 key 값과 value 값 출력하기 
for(String headerkey : headerMap.keySet()) {
System.out.println(headerkey + " : " + headerMap.get(headerkey));
}
System.out.println("----------------------------------------------");
//해당 문서의 내용을 가져오기 
/*
// 방법1 ==> URLConnection 객체를 이용하는 방법
// 서버에 있는 파일의 내용을 가져오기 위한 입력용 스트림 객체 생성 
InputStream is = urlCon.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
//자료를 읽어와 출력하기 
while(true) {
String str = br.readLine() ; // 한줄씩 읽어온다. 
if(str==null) break; //읽어온 값이 null 이면 반복문 탈출 
System.out.println(str);
}
br.close();
*/
//바업2 ==? URL 객체의 openStream() 메서드 이용하기 
InputStream is2 = url.openStream(); 
InputStreamReader isr = new InputStreamReader(is2, "utf-8");
BufferedReader br = new BufferedReader(isr);
//자료를 읽어와 출력하기 
while(true) {
String str = br.readLine() ; // 한줄씩 읽어온다. 
if(str==null) break; //읽어온 값이 null 이면 반복문 탈출 
System.out.println(str);
}
br.close();
}

}











댓글