Java 100

1:N 소켓 양방향 통신

1:N 소켓 양방향 통신에서는 하나의 서버가 여러 클라이언트와 동시에 양방향 통신을 할 수 있습니다. 이는 채팅 애플리케이션, 멀티플레이어 게임 서버 등에서 흔히 사용됩니다. 필요 개념서버와 클라이언트 소켓:서버는 하나의 ServerSocket을 통해 여러 클라이언트의 연결 요청을 기다립니다.클라이언트는 각각의 Socket을 통해 서버에 연결을 요청하고, 연결된 후 서버와 통신합니다.멀티스레딩:서버는 각 클라이언트와의 통신을 별도의 스레드에서 처리합니다. 이를 통해 여러 클라이언트와 동시에 통신할 수 있습니다.각 클라이언트는 서버와의 통신을 처리하는 자체 스레드를 가집니다.동기화 및 자원 관리:여러 스레드가 동시에 데이터를 읽고 쓸 수 있으므로, 데이터의 일관성을 유지하기 위한 동기화가 필요합니다.서버는..

Java/Java 2024.05.24

1:1 양방향 통신 ( 채팅 기본 기능 구현 )

서버 측 코드ServerSocket 을 생성하고 클라이언트의 연결을 기다립니다.BufferedReader 를 사용하여 클라이언트로부터 메시지를 읽고, PrintWriter를 사용하여 클라이언트에게 메시지를 보냅니다.키보드 입력을 받기 위해 BufferedReader를 사용합니다.클라이언트로부터 데이터를 읽는 스레드와 키보드 입력을 클라이언트로 보내는 스레드를 각각 실행합니다.package ch04;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;publi..

Java/Java 2024.05.22

1:1 단방향 통신

서버 측 기본 코드 작성네트워크 통신의 기초 이해서버는 네트워크 통신의 핵심 역할을 합니다. 서버 측 코드를 작성함으로써 우리는 네트워크 통신의 기본 개념을 이해할 수 있습니다.서버 소켓(ServerSocket) 생성: 네트워크 연결을 기다리는 소켓입니다.포트 바인딩: 특정 포트 번호에 서버 소켓을 결합하여 외부에서 접근할 수 있도록 합니다.클라이언트 연결 수락(accept): 클라이언트가 서버에 연결할 수 있도록 대기하고, 연결 요청을 받아들입니다.데이터 송수신 이해서버 측 코드에서 클라이언트로부터 데이터를 수신하고 이를 처리하는 과정을 배웁니다. 이는 네트워크 프로그래밍의 핵심 기능 중 하나입니다.입력 스트림(Input Stream): 클라이언트로부터 데이터를 읽어들이는 방법입니다.데이터 처리: 수신..

Java/Java 2024.05.22

소켓 ( Socket )

소켓(Socket)이란?소켓은 컴퓨터 네트워킹에서 매우 중요한 역할을 하며, 특히 자바 I/O에서 자주 사용됩니다. 소켓은 네트워크 상에서 통신을 가능하게 하는 끝점을 의미합니다. 두 컴퓨터 간의 데이터를 주고받기 위해 사용되는 인터페이스로, 소켓을 통해 네트워크 연결을 설정하고 데이터를 송수신할 수 있습니다. 쉽게 말해, 소켓은 네트워크를 통해 다른 컴퓨터와 대화하는 전화기 같은 역할을 합니다. (소켓은 사실 파일 개념과 같다)소켓은 물리적인 장치가 아니라 추상적인 개념의 약속입니다. 네트워크 통신을 위해 소프트웨어적으로 정의된 인터페이스로, 컴퓨터 간의 데이터 교환을 가능하게 하는 규칙과 방법을 의미합니다. 이를 통해 네트워크 애플리케이션이 서로 통신할 수 있습니다. 💡 일반 사용자 컴퓨터에서 네트..

Java/Java 2024.05.22

고수준 스트림 ( Data/Object Stream )

DataInputStream, DataOutputStreamDataInputStream과 DataOutputStream은 자바의 I/O 스트림 클래스 중 하나로, 원시 자료형(정수, 실수, 문자 등)을 쉽게 읽고 쓸 수 있도록 도와줍니다. 이 두 클래스는 데이터의 형식을 유지하면서 입력 및 출력을 수행할 수 있어, 자료의 손실 없이 데이터를 주고받을 수 있습니다. package io.file.ch08;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;public class MyDataStream { public static void..

Java/Java 2024.05.22