목록java (153)
병호의 IT새싹키우기
서버측 코드 리팩토링 1단계 - 함수로 분리해보기서버측 코드 리팩토링 2단계 - 상속 활용 구현 클래스 - AbstractServer 상속 활용 복잡한 애플리케이션에서는 추상 클래스와 구현 클래스를 분리하는 것이 유용할 수 있지만, 간단한 경우에는 단일 클래스 설계가 더 적합할 수 있습니다. 상황에 따라 적절한 설계를 선택하는 것이 중요합니다.클라이언트측 코드 리팩토링 1단계 - 함수로 분리해보기 클라이언트측 코드 리팩토링 2단계 - 상속 활용
💡멀티 스레드 활용💡 양방향 통신을 지속적으로 수행하기 위해 서버와 클라이언트 모두에서 키보드 입력을 받아 상대방에게 데이터를 보내고 받을 수 있도록 스레드와 while문을 활용하여 코드를 작성해봅시다. 서버 측 코드ServerSocket 을 생성하고 클라이언트의 연결을 기다립니다.BufferedReader 를 사용하여 클라이언트로부터 메시지를 읽고, PrintWriter를 사용하여 클라이언트에게 메시지를 보냅니다.키보드 입력을 받기 위해 BufferedReader를 사용합니다.클라이언트로부터 데이터를 읽는 스레드와 키보드 입력을 클라이언트로 보내는 스레드를 각각 실행합니다. Thread의 join() 메서드 - 역할과 기능스레드 동기화: join() 메서드를 사용하여 여러 스레드가 순서대로 종료되..
PrintWriter 사용 이유편리한 메서드: print(), println(), **printf()**와 같은 메서드를 제공하여 다양한 형식의 데이터를 손쉽게 출력할 수 있습니다.자동 플러시(autoFlush): **PrintWriter**를 생성할 때 **autoFlush**를 **true**로 설정하면, println() 등의 메서드를 호출할 때 자동으로 버퍼가 플러시되어 데이터를 즉시 전송합니다. 이는 네트워크 소켓과 같이 실시간 데이터 전송이 중요한 경우에 유용합니다.버퍼링: 출력 데이터를 버퍼에 저장한 후 한 번에 출력하여 성능을 향상시킵니다. 필요시 flush() 메서드를 호출하여 강제로 데이터를 출력할 수도 있습니다.주요 메서드print(): 다양한 데이터 타입을 출력합니다. (문자열, 정..
💡서버 측 기본 코드 작성의 목적 💡 네트워크 프로그래밍을 시작하면서 가장 먼저 배워야 할 것은 서버와 클라이언트 간의 통신입니다. 서버는 클라이언트의 요청을 받아들이고, 클라이언트가 보내는 데이터를 처리하는 역할을 합니다. 서버 측 기본 코드를 작성을 해보는 이유? 네트워크 통신의 기초 이해서버는 네트워크 통신의 핵심 역할을 합니다. 서버 측 코드를 작성함으로써 우리는 네트워크 통신의 기본 개념을 이해할 수 있습니다.서버 소켓(ServerSocket) 생성: 네트워크 연결을 기다리는 소켓입니다.포트 바인딩: 특정 포트 번호에 서버 소켓을 결합하여 외부에서 접근할 수 있도록 합니다.클라이언트 연결 수락: 클라이언트가 서버에 연결할 수 있도록 대기하고, 연결 요청을 받아들입니다.데이터 송수신 이해서버 ..
소켓은 컴퓨터 네트워킹에서 매우 중요한 역할을 하며, 특히 자바 I/O에서 자주 사용됩니다. 1. 소켓(Socket)이란?소켓은 네트워크 상에서 통신을 가능하게 하는 끝점을 의미합니다. 두 컴퓨터 간의 데이터를 주고받기 위해 사용되는 인터페이스로, 소켓을 통해 네트워크 연결을 설정하고 데이터를 송수신할 수 있습니다. 쉽게 말해, 소켓은 네트워크를 통해 다른 컴퓨터와 대화하는 전화기 같은 역할을 합니다. (소켓은 사실 파일 개념과 같다)소켓은 물리적인 장치가 아니라 추상적인 개념의 약속입니다. 네트워크 통신을 위해 소프트웨어적으로 정의된 인터페이스로, 컴퓨터 간의 데이터 교환을 가능하게 하는 규칙과 방법을 의미합니다. 이를 통해 네트워크 애플리케이션이 서로 통신할 수 있습니다. 💡 일반 사용자 컴퓨터에서..