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();
}
}
댓글
댓글 쓰기