JAVA 네트워크 Neworkex


InetAddress Class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.net.InetAddress;
import java.util.Scanner;
 
public class InetAddressEx{
 
    Scanner scanner;
 
    public InetAddressEx(){
        System.out.println("Host 이름을 입력하세요.");
        scanner = new Scanner(System.in);
        try{
            InetAddress inetAddress = InetAddress.getByName(scanner.next());
            System.out.println("Computer Name : " + inetAddress.getHostName());
            System.out.println("Computer IP : " + inetAddress.getHostAddress());
        } catch(Exception e){
            System.out.println(e.getMessage());
        }
    }
}
 
//#################### mainclass
 
public class MainClass{
    public static void main(String[] args){
        new InetAddressEx();
    }
}
cs


result




URL Class
DNS를 통한 IP정보를 이용하여 URL객체를 만든 후 네트워크 접속 및 URL 정보를 얻어온다.
* DNS(Domain Name System)란 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행함.
URLConnection Class
추상클래스로 URL 객체로부터 생성된다.
URL클래스의 openConnection() 메소드를 이용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.io.BufferedReader;
import java.util.Scanner;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.io.FileWriter;
 
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);
            URLConnection con = url.openConnection(); // 접속
            // con객체로부터 읽어온것을 버퍼에..
            BufferedReader webData = new BufferedReader(new InputStreamReader(con.getInputStream()));
            FileWriter fw = new FileWriter("C:\\aaa\\file.html"false);
            // 한줄씩 읽음 null이 아닐때까지
            while((code = webData.readLine()) != null){
                fw.write(code);
            }
            System.out.println("The End");
            // 종료
            fw.close();
            webData.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
        }
    }
}
 
//#################### mainclass
 
public class MainClass{
    public static void main(String args[]){
        new URLConEX();
    }
}
cs


result

웹 주소를 입력하세요.
http://www.google.com
The end

웹페이지의 소스코드를 얻어온다.


Socket
네트워크 소켓(network socket)은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 인터넷 소켓이다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. 

일반적인 Socket 프로세스
1. Server에서 ServerSocket을 만들고, Client의 요청을 기다림.
2. Client에서 Socket을 만들고, I/O Stream을 만들어 Server로 요청함.
3. SerVer에서 Client의 요청을 받아 Socket을 만들고, I/O Stream을 만들음.
4. 통신
5. Socket Close


간단한 채팅 프로그램
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//############### ServerSocket
 
import java.io.BufferedReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.PrintWriter;
import java.io.InputStreamReader;
 
public class MakeServerSocket{
 
    ServerSocket serverSocket = null;     // 기다리는 소켓
    Socket socket = null;    // 통신하는 소켓
    PrintWriter writer = null;
    BufferedReader reader = null;
    String lineStr;
 
    public MakeServerSocket(){
        try {
            serverSocket = new ServerSocket(2000); // portNumber
            
            while(true){
                // Client 요청
                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){
                    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();
    }
}
 
//############### ClientSocket
 
import java.io.BufferedReader;
import java.net.Socket;
import java.io.PrintWriter;
import java.io.InputStreamReader;
 
public class MakeClientSocket{
 
    Socket socket = null;
    PrintWriter writer = null;
    BufferedReader reader = null;
 
    public MakeClientSocket(){
        try{
            
            socket = new Socket("localhost"2000); // host, port
            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();
            
        } catch(Exception e) {}
    }
    
    public static void main(String[] args) {
        new MakeClientSocket();
    }
}
cs

Server Class와 Client Class 둘 모두 실행함.





댓글