반응형

JAVA 374

자바 UDP소켓 프로그래밍

UDP(User Datagram Protocol)는 비연결성이며 신뢰성이 낮은 프로토콜로, 데이터를 패킷 단위로 전송합니다. 자바에서 UDP 소켓 프로그래밍은 java.net 패키지의 DatagramSocket 및 DatagramPacket 클래스를 사용하여 구현됩니다. 아래는 간단한 UDP 소켓 프로그래밍 예제와 각 구성 요소에 대한 설명입니다. UDP 클라이언트 예제 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPClient { public static void main(String[] args) { tr..

JAVA/포스팅 2023.11.27

자바 TCP소켓 프로그래밍

TCP(Transmission Control Protocol)는 신뢰성 있는 연결을 제공하는 프로토콜로, 자바에서 TCP 소켓 프로그래밍은 java.net 패키지의 Socket 및 ServerSocket 클래스를 사용하여 구현됩니다. 아래는 간단한 TCP 소켓 프로그래밍 예제와 각 구성 요소에 대한 설명입니다. TCP 클라이언트 예제 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class TCPClient { public static void main(String[] args) { try { // 서버에 연결 Socket socket = new..

JAVA/포스팅 2023.11.27

자바 소켓 프로그래밍

자바 소켓 프로그래밍은 네트워크 통신을 위한 기본적인 도구로서 소켓(Socket)을 사용하여 클라이언트와 서버 간의 통신을 구현하는 것을 말합니다. 소켓은 네트워크를 통해 데이터를 주고받을 수 있도록 하는 엔드포인트입니다. 자바에서는 java.net 패키지에서 소켓 관련 클래스와 인터페이스를 제공하고 있습니다. 기본적인 소켓 통신 단계 1. 서버 소켓 생성 및 대기 ServerSocket 클래스를 사용하여 서버 소켓을 생성하고, 클라이언트의 연결을 대기합니다. ServerSocket serverSocket = new ServerSocket(8080); Socket clientSocket = serverSocket.accept(); // 클라이언트 연결 대기 2. 클라이언트 소켓 생성 및 연결 Socket..

JAVA/포스팅 2023.11.27

자바 URLConnection

URLConnection 클래스는 URL의 리소스와의 통신을 위한 추상 클래스입니다. 이 클래스는 java.net 패키지에 속해 있습니다. openConnection() 메서드를 사용하여 URL 객체로부터 URLConnection 객체를 얻을 수 있습니다. 이 클래스를 사용하면 URL과의 다양한 통신 작업을 수행할 수 있습니다. URLConnection 주요 메서드 1. connect() URL과의 실제 연결을 시도합니다. 일반적으로 이 메서드를 직접 호출하지 않아도 되며, 내부적으로 자동으로 호출됩니다. URL url = new URL("https://www.example.com"); URLConnection connection = url.openConnection(); connection.connec..

JAVA/포스팅 2023.11.27

자바 URL(Uniform Resource Location)

URL(Uniform Resource Locator)은 자원의 위치를 나타내는 문자열입니다. 자원은 일반적으로 웹상의 문서, 이미지, 동영상 등의 파일이 될 수 있습니다. 자바에서는 URL 클래스를 사용하여 URL을 다룰 수 있습니다. 이 클래스는 java.net 패키지에 속해 있습니다. URL 클래스의 생성자 1. URL(String spec) 주어진 문자열 spec을 기반으로 URL을 생성합니다. URL url = new URL("https://www.example.com/path/file.html"); 2. URL(URL context, String spec) 주어진 context URL과 상대 경로 문자열 spec을 기반으로 새로운 URL을 생성합니다. URL baseUrl = new URL("h..

JAVA/포스팅 2023.11.27

자바 InetAddress

InetAddress 클래스는 자바에서 IP 주소를 나타내는 데 사용되는 클래스입니다. 이 클래스는 호스트 이름과 IP 주소 간의 변환, 네트워크 연결 및 기타 네트워크 관련 작업을 수행하는 데 사용됩니다. InetAddress 클래스는 java.net 패키지에 속해 있습니다. 주요 메서드 1. getByName(String host) - 호스트 이름에 대한 InetAddress 객체를 반환합니다. - 호스트 이름이 존재하지 않으면 UnknownHostException이 발생할 수 있습니다. InetAddress address = InetAddress.getByName("www.example.com"); 2. getHostAddress() InetAddress 객체의 IP 주소를 문자열로 반환합니다. S..

JAVA/포스팅 2023.11.27

자바 IP주소(IP address)

IP 주소(IP address)는 인터넷 프로토콜 스위트(IP 스위트)에서 각 네트워크 인터페이스와 호스트를 식별하는 데 사용되는 숫자로 된 레이블입니다. IP 주소는 네트워크에서 데이터를 라우팅하는 데 필요한 기본 식별자로 작용합니다. IPv4와 IPv6는 현재 가장 널리 사용되는 두 가지 주요 IP 주소 버전입니다. 1. IPv4 (Internet Protocol version 4) IPv4는 32비트 주소 체계를 사용하며, 일반적으로 "x.x.x.x"의 형태로 표현됩니다. 여기서 x는 0에서 255까지의 숫자입니다. 예: 192.168.0.1 2. IPv6 (Internet Protocol version 6) IPv6는 IPv4의 주소 고갈 문제를 해결하기 위해 도입되었습니다. IPv6 주소는 12..

JAVA/포스팅 2023.11.27

자바 클라이언트(client)와 서버(sever)

자바에서 클라이언트-서버 모델을 구현하는 것은 네트워크 프로그래밍의 핵심입니다. 클라이언트는 서비스를 요청하고, 서버는 해당 요청에 응답하는 구조를 가지고 있습니다. 이를 통해 분산 시스템에서 효과적인 통신이 가능해집니다. 자바에서 클라이언트와 서버를 구현하기 위해서는 소켓(Socket)을 사용합니다. 소켓은 네트워크를 통한 데이터 통신을 담당하는 역할을 합니다. 아래에서 간단한 예제를 통해 클라이언트와 서버의 구현 방법을 살펴보겠습니다. 클라이언트(Client) 구현 import java.io.*; import java.net.*; public class Client { public static void main(String[] args) { try { // 서버에 연결 Socket socket = n..

JAVA/포스팅 2023.11.27

자바 네트워킹(Networking)

자바 네트워킹은 네트워크 상에서 데이터를 주고받기 위한 메커니즘을 제공합니다. 네트워킹은 주로 소켓을 사용하여 이루어지며, Java는 소켓 프로그래밍을 위한 다양한 클래스와 인터페이스를 제공합니다. 자바에서 네트워킹을 구현하는 주요 클래스 및 개념에 대해 알아보겠습니다. 1. 소켓 (Socket) 및 서버 소켓 (ServerSocket) Socket 클래스: 클라이언트와 서버 간의 통신을 담당합니다. Socket은 서버의 IP 주소 및 포트 번호와 연결하여 데이터를 송수신할 수 있도록 해줍니다. Socket socket = new Socket("서버 IP", 포트 번호); - ServerSocket 클래스: 서버에서 클라이언트의 연결을 수락하고 각 클라이언트에 대해 새로운 Socket을 생성합니다. Se..

JAVA/포스팅 2023.11.27

자바 직렬화 transient

transient 키워드는 직렬화에서 특정 필드를 제외하고자 할 때 사용되는 키워드입니다. 직렬화는 객체의 상태를 바이트 스트림으로 변환하는 과정이며, 모든 객체의 필드가 이 과정에 포함되게 됩니다. 그러나 때로는 특정 필드를 직렬화에서 제외하고 싶을 때가 있습니다. 이때 transient 키워드를 사용합니다. transient 사용 예제 import java.io.*; class MyClass implements Serializable { private static final long serialVersionUID = 1L; private int regularField; private transient String transientField; // 생성자, 메서드 등 클래스의 내용 // ... } 위의..

JAVA/포스팅 2023.11.27

자바 직렬화 Serializable

Serializable은 자바 직렬화의 기능을 활성화하기 위한 마커 인터페이스입니다. 마커 인터페이스란 메서드가 없고, 단지 해당 클래스나 인터페이스를 구현한 클래스에 대한 정보를 제공하는 역할을 합니다. Serializable 인터페이스를 구현한 클래스는 해당 객체의 인스턴스 상태를 직렬화할 수 있도록 허용됩니다. 1. Serializable 인터페이스 사용 클래스가 Serializable 인터페이스를 구현하면, 해당 클래스의 인스턴스는 직렬화 및 역직렬화가 가능해집니다. 직렬화는 객체를 바이트 스트림으로 변환하는 프로세스이고, 역직렬화는 바이트 스트림에서 객체를 복원하는 프로세스입니다. import java.io.*; // Serializable 인터페이스를 구현한 클래스 class MyClass i..

JAVA/포스팅 2023.11.26

자바 ObjectOutputStream

ObjectOutputStream 클래스는 자바에서 객체를 직렬화하여 바이트 스트림으로 출력하는 데 사용되는 클래스입니다. 직렬화는 객체를 저장하거나 네트워크를 통해 전송하기 위해 객체를 바이트 스트림으로 변환하는 프로세스를 말합니다. ObjectOutputStream의 생성자 public ObjectOutputStream(OutputStream out) throws IOException OutputStream을 매개변수로 받아 ObjectOutputStream 객체를 생성합니다. 주어진 출력 스트림을 사용하여 객체를 직렬화한 후 전송하거나 저장할 수 있습니다. 주요 메서드 1. void writeObject(Object obj) 메서드 - 주어진 객체를 직렬화하여 출력 스트림에 기록합니다. - 객체는 ..

JAVA/포스팅 2023.11.26

자바 ObjectInputStream

ObjectInputStream은 자바에서 객체를 역직렬화하는 데 사용되는 클래스입니다. 이 클래스는 InputStream을 확장하며, 직렬화된 객체를 역직렬화하여 원래의 객체로 복원할 수 있게 해줍니다. ObjectInputStream의 주요 메서드 1. Object readObject() 메서드 - 직렬화된 객체를 역직렬화하여 반환합니다. - 반환된 객체의 실제 타입은 Object이므로, 필요에 따라 형변환을 수행해야 합니다. - 만약 역직렬화 중에 클래스가 찾아지지 않거나 클래스의 버전이 일치하지 않는 경우 ClassNotFoundException이 발생할 수 있습니다. try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("..

JAVA/포스팅 2023.11.26

자바 직렬화(Serialization)

자바 직렬화(Java Serialization)는 객체의 상태를 바이트 스트림으로 변환하여 저장하거나 네트워크를 통해 전송하는 메커니즘을 말합니다. 이를 통해 객체의 상태를 저장하고 나중에 복원할 수 있습니다. 주로 객체를 파일에 저장하거나 네트워크를 통해 객체를 전송하는데 사용됩니다. 직렬화의 기본 원리 직렬화는 java.io.Serializable 인터페이스를 구현한 클래스에서 사용됩니다. 이 인터페이스는 특별한 메서드를 갖지 않고 단순히 마킹 인터페이스로 사용됩니다. 직렬화가 가능한 클래스는 다음의 조건을 충족해야 합니다. 1. Serializable 인터페이스를 구현해야 합니다. 2. 모든 필드는 Serializable이어야 합니다. 만약 직렬화하고자 하는 클래스에 포함된 필드 중 하나라도 Ser..

JAVA/포스팅 2023.11.26

자바 File

File 클래스는 파일이나 디렉토리의 경로명을 추상화하여 파일이나 디렉토리를 생성하거나 조작하는 데 사용되는 클래스입니다. 이 클래스는 파일 시스템의 경로명을 캡슐화하여 파일 및 디렉토리에 대한 정보를 제공합니다. File 클래스의 생성자 File 클래스는 다음과 같은 생성자를 제공합니다. 1. File(String pathname): 파일이나 디렉토리의 경로명을 가지고 File 객체를 생성합니다. // 파일 경로로 File 객체 생성 File file1 = new File("example.txt"); // 디렉토리 경로로 File 객체 생성 File directory = new File("/path/to/directory"); 2. File(String parent, String child): 부모 경..

JAVA/포스팅 2023.11.26

자바 RandomAccessFile

RandomAccessFile 클래스는 파일에 대한 읽기 및 쓰기 작업을 지원하는 클래스로, 파일 내의 임의의 위치에서 데이터를 읽거나 쓸 수 있습니다. 이 클래스는 입출력 스트림과 유사하지만, 파일에 대한 임의 접근(랜덤 액세스)을 제공하는 점에서 다릅니다. 1. RandomAccessFile 클래스의 생성자 RandomAccessFile 클래스는 다음과 같은 두 가지 생성자를 제공합니다. - RandomAccessFile(File file, String mode) : 파일 객체와 모드를 인자로 받아 객체를 생성합니다. 모드는 "r" (읽기), "rw" (읽기 및 쓰기), "rws" (동기적으로 파일 내용 및 메타데이터 갱신) 등이 있습니다. - RandomAccessFile(String name, S..

JAVA/포스팅 2023.11.26

자바 표준입출력 setIn()

자바의 System 클래스에는 setIn 메서드가 있습니다. 이 메서드는 표준 입력 스트림(System.in)을 변경하는 데 사용됩니다. 따라서 이 메서드를 사용하면 표준 입력이 다른 입력 스트림으로 바뀝니다. 메서드 시그니처는 다음과 같습니다. public static void setIn(InputStream in); 여기서 in은 새로운 표준 입력 스트림을 나타냅니다. 이를 통해 표준 입력을 다른 소스로 변경할 수 있습니다. 예를 들어, 파일로부터의 입력 스트림으로 표준 입력을 변경하는 예제는 다음과 같습니다. import java.io.*; public class RedirectSystemIn { public static void main(String[] args) { // 현재의 표준 입력(Sys..

JAVA/포스팅 2023.11.26

자바 표준입출력 setErr()

자바의 System 클래스에는 setErr 메서드가 있습니다. 이 메서드는 표준 에러 스트림(System.err)을 변경하는 데 사용됩니다. 즉, 이 메서드를 사용하면 표준 에러가 다른 출력 스트림으로 바뀝니다. 메서드 시그니처는 다음과 같습니다. public static void setErr(PrintStream err); 여기서 err은 새로운 표준 에러 스트림을 나타냅니다. 이를 통해 표준 에러를 다른 출력 대상으로 변경할 수 있습니다. 예를 들어, 파일로의 출력 스트림으로 표준 에러를 변경하는 예제는 다음과 같습니다. import java.io.*; public class RedirectSystemErr { public static void main(String[] args) { // 현재의 표준..

JAVA/포스팅 2023.11.26

자바 표준입출력 setOut()

자바의 System 클래스에는 setOut 메서드가 있습니다. 이 메서드는 표준 출력 스트림(System.out)을 변경하는 데 사용됩니다. 즉, 이 메서드를 사용하면 표준 출력이 다른 출력 스트림으로 바뀝니다. 메서드 시그니처는 다음과 같습니다. public static void setOut(PrintStream out); 여기서 out은 새로운 표준 출력 스트림을 나타냅니다. 이를 통해 표준 출력을 다른 출력 대상으로 변경할 수 있습니다. 예를 들어, 파일로의 출력 스트림으로 표준 출력을 변경하는 예제는 다음과 같습니다 import java.io.*; public class RedirectSystemOut { public static void main(String[] args) { // 현재의 표준 ..

JAVA/포스팅 2023.11.26

자바 System.err

System.err은 자바에서 표준 에러 출력 스트림을 나타내는 객체입니다. 이것은 주로 프로그램에서 오류 및 예외 정보를 출력할 때 사용됩니다. System.err은 PrintStream 클래스의 인스턴스로, System.out과 비슷한 기능을 제공합니다. 주로 System.err을 사용하여 오류 메시지를 출력하는 예제는 다음과 같습니다. public class ErrorExample { public static void main(String[] args) { try { // 어떤 예외가 발생할 때 throw new RuntimeException("This is an error!"); } catch (RuntimeException e) { // 예외를 System.err을 사용하여 출력 System.e..

JAVA/포스팅 2023.11.26

자바 System.out

System.out은 자바에서 표준 출력 스트림을 나타내는 객체입니다. 이것은 주로 콘솔에 데이터를 출력할 때 사용됩니다. System.out은 PrintStream 클래스의 인스턴스로, 여러가지 print 및 println 메서드를 제공하여 출력을 간편하게 할 수 있게 해줍니다. 주로 System.out을 사용하여 데이터를 출력하는 예제는 다음과 같습니다. public class PrintExample { public static void main(String[] args) { // 문자열 출력 System.out.print("Hello, "); System.out.println("World!"); // 변수 값 출력 int number = 42; System.out.println("The answer..

JAVA/포스팅 2023.11.26

자바 System.in

System.in은 자바에서 표준 입력 스트림을 나타내는 객체입니다. 이것은 보통 사용자로부터의 입력을 읽을 때 주로 활용됩니다. System.in은 InputStream 클래스의 인스턴스로, 바이트 단위로 데이터를 읽습니다. 자바에서 System.in을 사용하여 키보드로부터 사용자의 입력을 받기 위해서는 주로 Scanner나 BufferedReader와 같은 클래스를 사용합니다. 1. Scanner를 사용한 표준 입력 import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { // System.in을 이용하여 Scanner 생성 Scanner scanner = new Scanner(Syst..

JAVA/포스팅 2023.11.26

자바 표준입출력

자바의 표준 입력 및 출력은 System 클래스의 in, out, err 스태틱 필드를 통해 제공됩니다. 이들은 각각 표준 입력 스트림(System.in), 표준 출력 스트림(System.out), 그리고 표준 에러 스트림(System.err)을 나타냅니다. 1. 표준 입력 (System.in) System.in은 표준 입력 스트림을 나타냅니다. 이것은 보통 키보드로부터의 입력을 의미합니다. 표준 입력에서 데이터를 읽기 위해 Scanner나 BufferedReader 등을 사용할 수 있습니다. import java.util.Scanner; public class StandardInputExample { public static void main(String[] args) { // Scanner를 사용하여..

JAVA/포스팅 2023.11.26

자바 OutputStreamWriter

OutputStreamWriter는 바이트 출력 스트림을 문자 출력 스트림으로 변환하는 보조 스트림 중 하나입니다. 이 클래스는 특정 문자 집합의 인코딩을 사용하여 문자를 바이트로 변환합니다. 주로 바이트 기반 스트림에 연결되어 문자 데이터를 쓸 때 사용됩니다. OutputStreamWriter는 Writer 클래스를 상속하고 있습니다. OutputStreamWriter의 생성자 중에서 자주 사용되는 것은 다음과 같습니다. 1. OutputStreamWriter(OutputStream out) 생성자 주어진 바이트 출력 스트림 out을 기반으로 OutputStreamWriter를 생성합니다. 2. OutputStreamWriter(OutputStream out, Charset cs) 생성자 주어진 바이트..

JAVA/포스팅 2023.11.26

자바 InputStreamReader

InputStreamReader는 바이트 입력 스트림을 문자 입력 스트림으로 변환하는 보조 스트림입니다. 주로 바이트 기반 스트림에서 문자 데이터를 읽을 때 사용됩니다. InputStreamReader는 Reader 클래스를 상속하고 있습니다. InputStreamReader의 생성자 중에서 자주 사용되는 것은 다음과 같습니다. 1. InputStreamReader(InputStream in) 생성자 주어진 바이트 입력 스트림 in을 기반으로 InputStreamReader를 생성합니다. 2. InputStreamReader(InputStream in, Charset cs) 생성자 주어진 바이트 입력 스트림 in을 기반으로 하며, 주어진 문자 집합 cs를 사용하여 InputStreamReader를 생성합..

JAVA/포스팅 2023.11.26

자바 BufferedWriter

BufferedWriter는 문자 출력 스트림에 대한 보조 스트림으로서, 효율적인 문자 출력을 위해 버퍼링을 제공합니다. 주로 문자를 파일에 쓸 때 사용됩니다. BufferedWriter는 Writer 클래스를 상속하고 있습니다. BufferedWriter의 생성자는 여러 가지가 있지만, 주로 사용되는 것은 다음과 같습니다. 1. BufferedWriter(Writer out) 생성자 주어진 Writer로부터 BufferedWriter를 생성합니다. BufferedWriter의 주요 메서드와 사용 예제는 다음과 같습니다. - void write(int c) 메서드 : 주어진 문자를 출력 스트림에 씁니다. - void write(char[] cbuf, int off, int len) 메서드 : 주어진 문자..

JAVA/포스팅 2023.11.26

자바 BufferedReader

BufferedReader는 문자 입력 스트림에서 문자를 효율적으로 읽기 위한 보조 스트림입니다. BufferedReader는 기반 스트림인 Reader로부터 텍스트 데이터를 읽어오며, 내부적으로 버퍼링을 통해 입출력 성능을 향상시킵니다. BufferedReader의 생성자는 여러 가지가 있지만, 주로 사용되는 것은 다음과 같습니다. 1. BufferedReader(Reader in) 생성자 주어진 Reader로부터 BufferedReader를 생성합니다. BufferedReader의 주요 메서드와 사용 예제는 다음과 같습니다. - int read() 메서드 : 입력 스트림으로부터 한 문자를 읽어옵니다. 파일의 끝에 도달하면 -1을 반환합니다. - int read(char[] cbuf, int off, ..

JAVA/포스팅 2023.11.26

자바 StringWriter

StringWriter 클래스는 문자열을 쓰기 위한 문자 출력 스트림을 제공하는 클래스입니다. 즉, 문자열에 데이터를 문자 단위로 쓸 수 있게 해주는 클래스입니다. StringWriter는 주로 문자열을 조립하거나 다른 문자 출력 스트림과 연결하여 사용될 수 있습니다. StringWriter 클래스는 Writer 클래스를 상속하고 있으며, 주요 생성자는 다음과 같습니다. 1. StringWriter() 생성자 빈 문자열을 사용하여 StringWriter 객체를 생성합니다. StringWriter 클래스의 주요 메서드는 Writer 클래스에서 상속받은 것들로, 주로 문자열에 데이터를 쓰는 데 사용됩니다. 몇 가지 주요 메서드는 다음과 같습니다. - write(int c) 메서드 : 주어진 문자를 문자열에 ..

JAVA/포스팅 2023.11.26

자바 StringReader

StringReader 클래스는 문자열을 읽기 위한 문자 입력 스트림을 제공하는 클래스입니다. 즉, 문자열을 문자 단위로 읽을 수 있게 해주는 클래스입니다. StringReader는 주로 문자열에서 데이터를 읽어와 파싱하거나 다른 문자 입력 스트림과 연결하여 사용될 수 있습니다. StringReader 클래스는 Reader 클래스를 상속하고 있으며, 주요 생성자는 다음과 같습니다. 1. StringReader(String s) 생성자 주어진 문자열 s로부터 데이터를 읽기 위한 StringReader 객체를 생성합니다. StringReader 클래스의 주요 메서드는 Reader 클래스에서 상속받은 것들로, 주로 문자열에서 데이터를 읽는 데 사용됩니다. 몇 가지 주요 메서드는 다음과 같습니다. - read(..

JAVA/포스팅 2023.11.26

자바 PipedWriter

PipedWriter 클래스는 Java I/O 패키지에서 파이프 스트림을 이용한 스레드 간 통신을 지원하는 클래스 중 하나입니다. 파이프 스트림은 한 스레드에서 출력한 데이터를 다른 스레드에서 입력 받을 수 있게 해주는 특별한 형태의 스트림입니다. PipedWriter는 주로 한 스레드에서 다른 스레드로 데이터를 전송할 때 사용됩니다. 여러 스레드 간의 통신이 필요한 상황에서 사용됩니다. PipedWriter는 PipedReader와 함께 사용되어 데이터를 파이프를 통해 전송할 수 있게 해줍니다. PipedWriter의 중요한 생성자 1. PipedWriter() 생성자 기본 버퍼 크기로 PipedWriter 객체를 생성합니다. 2. PipedWriter(PipedReader snk) 생성자 PipedR..

JAVA/포스팅 2023.11.26