개발자 도전기
[JAVA] 네트워크 입출력 본문
서버와 클라이언트
-네트워크
는 여러 컴퓨터들을 통신 회선으로 연결한 것을 말한다
-네트워크에서 서비스를 제공하는 프로그램을 서버
라고 부른다
-서비스를 요청하는 프로그램을 클라이언트
라고 부른다
-클라이언트가 서비스를 요청하고, 서버가 응답하는 방식으로 통신한다
IP주소와 Port번호
-IP주소
란 네트워크 어댑트마다 할당되는 컴퓨터의 고유한 주소이다
-Port 번호
란 운영체제가 관리하는 서버 프로그램의 연결 번호이다
-IP주소
로 통신할 컴퓨터를 결정하고 Port 번호
로 어떤 프로그램의 서버와 통신할지 결정한다
-IP주소 : Port번호
형태로 사용된다
TCP 네트워킹
-연결형 프로토콜로 상대방이 연결된 상태에서 데이터를 주고 받는다
-데이터가 순서대로 전달되며 손실이 발생하지 않는다
-IP와 함께 사용하기 때문에 TCP/IP
라고도 한다
-ServerSocket
은 서버가 클라이언트의 연결을 수락하는 클래스이다
-Socket
은 클라이언트에서 연결 요청할 때, 클라이언트와 서버 양쪽에서 데이터를 주고 받을 때 사용되는 클래스이다
// Server Computer
public class C01Computer1 {
public static void main(String[] args) throws IOException {
// 연결을 기다리는 쪽
ServerSocket serverSocket = new ServerSocket(9000);
Socket socket = serverSocket.accept(); // 연결 요구하기를 기다림
// socket 생성
try (socket) {// 출력 스트림 데코레이팅
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
try (os; osw; bw; pw) {
pw.println("hello world");
}
}
}
}
// Client Computer
public class C01Computer2 {
public static void main(String[] args) throws IOException {
//연결을 요구하는 쪽
// socket 생성
Socket socket = new Socket("172.30.1.21", 9000);
try (socket) {
// 입력 스트림 데코레이팅
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
try (is; isr; br;) {
String data = br.readLine();
System.out.println("컴퓨터1이 보낸 메시지 = " + data);
}
}
}
}
위 코드의 결과로 client computer는 'hello world'를 출력한다
'개발공부 > JAVA' 카테고리의 다른 글
[JAVA] LOMBOK (0) | 2024.04.16 |
---|---|
[JAVA] Enum (열거 타입) (0) | 2024.04.04 |
[JAVA] I/O Stream (1) | 2024.03.27 |
[JAVA] 멀티 스레드 (0) | 2024.03.26 |
[JAVA] 예외(Exception) (0) | 2024.03.25 |