이전 포스트에 이어서 이번엔 유니캐스트의 개념에 대해서 알아보기로 한다.
출처 : https://ko.wikipedia.org/wiki/유니캐스트
유니캐스트는 하나의 목적지에 데이터를 전송하는 방법이다.
가장 일반적인 방법으로, 우리가 저번에 했던 방식과 동일하다.
이번에는 가상머신을 이용해서 정말 통신이 되는 것을 확인 할 것이다.
서버 vm, 클라이언트 vm으로 나누어서 프로그램을 돌린다.
(가상머신 구축에 대한 설정은 넘어가겠다.)
10.0.0.1
10.0.0.2
아래는 서버 프로그램이다.
public class ServerSocket {
public static void main(String[] args) throws IOException {
java.net.ServerSocket serverSocket = new java.net.ServerSocket(6000);
while(true) {
Socket clientSocket = serverSocket.accept();
System.out.println("clientSocket.getInetAddress() = " + clientSocket.getInetAddress());
System.out.println("clientSocket.getLocalPort() = " + clientSocket.getLocalPort());
System.out.println("clientSocket.getPort() = " + clientSocket.getPort());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
writer.write("hi client!");
writer.flush();
clientSocket.close();
}
// serverSocket.close();
}
}
이번에는 서버는 데이터를 전송하기만 하고, 받지는 않겠다.
클라이언트는 데이터를 전송하기만 하면 된다.
아래는 클라이언트 프로그램이다.
public class ClientSocket {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("10.0.0.1", 6000);
System.out.println("socket.getInetAddress() = " + socket.getInetAddress());
System.out.println("socket.getLocalPort() = " + socket.getLocalPort());
System.out.println("socket.getPort() = " + socket.getPort());
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = reader.readLine();
System.out.println("read = " + line);
socket.close();
}
}
클라이언트에서 Socket객체를 생성자로 생성한게 보인다.
"10.0.0.1"
는 서버의 ip를 가리키고, 6000
은 서버 소켓이 열린 포트번호다.
먼저, 서버는 다음과 같은 출력이 나왔다.
getInetAddress()
: 원격 소켓의 ip 즉, 클라이언트의 ipgetLocalPort()
: 로컬 소켓의 포트 즉, 서버 소켓이 열린 포트번호getPort()
: 원격 소켓의 포트 즉, 클라이언트 소켓이 열린 포트번호클라이언트는 다음과 같은 출력을 내보냈다.
출력의 의미는 다음과 같다.
getInetAddress()
: 원격 소켓의 ip 즉, 서버의 ipgetLocalPort()
: 로컬 소켓의 포트 즉, 클라이언트 소켓이 열린 포트번호getPort()
: 원격 소켓의 포트 즉, 서버 소켓이 열린 포트번호반대로 결과가 출력되는 것을 볼 수 있다.
이는 서로 바라보는 터널의 방향이 다르기 때문이라고 볼 수 있다.
마지막으로 서버에서 클라이언트로 보낸 hi client
를 잘 받은 것을 볼 수 있다.