실전 자바 강좌 (ver.2018) - 초보부터 개발자 취업까지!! 강의를
개인공부하며 정리하는 용도의 포스팅입니다.
학습목표
- 네트워크에 연결되어 있는 대상 사이에 데이터를 전송하는 방법에 대해서 학습
네트워크 데이터 입력 및 출력
네트워크 대상(객체)사이에 입/출력(InputStream, OutputStream)을 이용해서
데이터를 입력하고 출력한다.
소켓(Socket)
네트워크상에서 데이터를 주고받기 위한 장치다.
Socket 클래스
서버는 클라이언트를 맞을 준비를 하고 있다가 클라이언트의 요청에 반응한다.
코드 입력 전 화면
serverSocket = new ServerSocket(9000);
System.out.println("클라이언트 맞을 준비 완료~~");
socket = serverSocket.accept();
System.out.println("클라이언트 연결~~");
System.out.println("socket: " + socket);
코드 입력 후 화면
Client와 Server 소켓(Socket)
서버에 ServerSocket을 준비하고 클라이언트에서 Socket을 이용해서 접속한다.
Client 측
Socket socket = null;
try {
socket = new Socket("localhost", 9000);
System.out.println("서버 연결~~");
System.out.println("socket: " + socket);
}
Server 측
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(9000);
System.out.println("클라이언트 맞을 준비 완료~~");
socket = serverSocket.accept();
System.out.println("클라이언트 연결~~");
System.out.println("socket: " + socket);
}
양방향 통신
클라이언트와 서버는 InputStream, OutputStream을 이용해서 양방향 통신을 할수 있다.
코드 예시
try {
socket = new Socket("localhost", 9000);
System.out.println("서버 연결 완료~~");
outputStream = socket.getOutputStream();
dataOutputStream = new DataOutputStream(outputStream);
inputStream = socket.getInputStream();
dataInputSteam = new DataInputStream(inputStream);
scanner = new Scanner(System.in);
while(true) {
System.out.println("메시지 입력~~");
String outMessage = scanner.nextLine();
dataOutputStream.writeUTF(outMessage);
dataOutputStream.flush();
String inMessage = dataInputStream.readUTF();
System.out.println("inMessage: " + inMessage);
if(outMessage.equals("STOP")) break;
}
}
try {
serverSocket = new ServerSocket(9000);
System.out.println("클라이언트 맞을 준비 완료~~");
socket = serverSocket.accept();
System.out.println("클라이언트 연결~~");
System.out.println("socket: " + socket);
inputStream = socket.getInputStream();
dataInputSteam = new DataIntputStream(inputStream);
outputStream = socket.getOutputStream();
dataOutputSteam = new DataOutputStream(outputStream);
while(true) {
String clientMessage = dataInputStream.readUTF();
System.out.println("clientMessage: " + clientMessage);
dataOutputStream.writeUTF("메시지 전송 완료~~");
dataOutputStream.flush();
if(clientMessage.equals("STOP")) break;
}
}
Comments