JAVA/DAY 21 _ 23.09.14 (8) 썸네일형 리스트형 Client Main @@ 내멋대로 summary - 내 ip주소 = localhost = 127.0.01 - socket.getOutputStream() : 전송할 내용 get - DataOutputStream : 읽을 수 있게 래핑하여 데이터를 송신할 준비 - dis.writeUTF(inputValue) : 데이터를 출력 4. server에 접속 시도를 할 클라이언트 생성 4-1) 직접적으로 IP주소 쓰는 방법 System.out.println("클라이언트 프로그램 시작"); Socket socket = new Socket("172.30.1.46", 7777); 4-2) 내부통신 하겠다? //172.30.1.31 = localhost ★★★ = 127.0.01 //--> 다 같은 표현임 System.out.println(.. Server Main @@ 내멋대로 summary - socket : 클라이언트와 연결할 수 있는 콘센트 - 포트넘버 : 콘센트의 모양 - accept : --> 생성하면 콘센트 뚜껑 연거임 --> 한 콘센트는 하나밖에 연결 못하지?? 얘도 여러명 받으려면 여러개 있어야해 - DataInputStream : scanner같은 존재 -> 데이터를 읽을때 유용!! # serverSocket - 소켓 서버를 만들기 위해 사용되는 클래스 - 클라이언트로부터의 연결 요청을 수신하고, 각 클라이언트와 통신할 수 있는 소켓 객체를 생성 - 생성된 소켓은 클라이언트와 서버 간의 데이터 통신을 가능하게 함 # ServerSocket을 사용하여 소켓 서버를 만드는 일반적인 절차 1. ServerSocket 객체를 생성하고 서버가 리스닝(대기).. Network Basic ## 네트워크 통신 프로그래밍 # 특징: // 컴퓨터 프로그램이 네트워크를 통해 데이터를 송수신하고 상호작용하는 방법을 다루는 분야 // 네트워크 통신을 사용하면 원격 시스템과 통신하고 데이터를 공유할 수 있음 # ex) // A컴퓨터와 B컴퓨터가 연결이 되려면 주소가 필요하다 = IP, 포트번호 등 # IP주소(인터넷 프로토콜 주소) : 172.30.1.31 // 컴퓨터 네트워크에서 컴퓨터 또는 네트워크 장치를 고유하게 식별하기 위해 사용되는 숫자로 된 주소 // IP 주소는 인터넷 통신에서 데이터 패킷의 출발지와 목적지를 지정하는 데 사용됨 // 컴퓨터 및 네트워크 장치를 식별하고 데이터를 라우팅하는 데 중요한 역할을 함 // 일반적으로 개별 장치나 서버는 고정된 IPv4 또는 IPv6 주소를 가짐 .. Thread_Ex class MyThread extends Thread { public void run() { for (int i = 1; i 이 때 InterruptedException이 발생할 수 있습니다. // 이 예외는 스레드가 잠자고 있는 동안 다른 스레드가 해당 스레드를 강제로 깨우거나 인터럽트했을 때 발생합니다. // // 따라서 Thread.sleep(1000);를 사용할 때는 try-catch 블록을 사용하여 // 스레드가 인터럽트되었을 때 발생하는 예외를 적절하게 처리하는 것을 통해 코드의 안정성을 확보하는 것이 좋습니다. // 두 개의 스레드 생성 MyThread thread1 = new MyThread(); MyThread thread2 = new MyThread(); // 스레드 시작 thread1.. Thread_join // join(): // 현재 실행 중인 스레드를 일시 중지하고, 스레드 s1이 종료될 때까지 기다립니다. // --> 즉, 스레드 s1의 작업이 완료되기를 기다린 후, 다음 작업을 수행합니다. // Vector : 동기화된(synchronized) 동작을 보장하는 리스트 구현체 // 요소들을 순서대로 저장하며, 인덱스를 사용하여 요소에 접근할 수 있습니다. // 단일 스레드 환경에서는 ArrayList나 LinkedList 등의 비동기화 컬렉션을 사용하는 것이 더 효율적일 수 있다 class Some extends Thread{ public void run() { for(int x = 0 ; x < 200 ; x++) { Data2.list.add("그냥");// 1. Data2클래스의 list에 20.. Thread 기본개념 활용 class SomeThread extends Thread{ private String name; public SomeThread(String name) { this.name = name; } public void run() { for(int x = 0 ; x < 1000 ; x++) { System.out.println(name + "] " + x); } } } new SomeThread("안녕").start(); new SomeThread("반가웡").start(); new SomeThread("hello").start(); for(int x = 0 ; x < 1000 ; x++) { System.out.println("main] " + x); } // 원래내가하던것: 매서드 run호출 // 위에서부터.. Thread 생성 및 호출 방법 // 스레드를 생성하는 2가지 방법: // 1. thread클래스 상속 // 2. Runnable 인터페이스(= thread가 포함된 인터페이스) 상속 - 람다식 // 방법1. class Some1 extends Thread{ public void run() { } } // 방법2. class Some2 implements Runnable{ @Override public void run() { } } // 호출방법 // 방법1 호출 new Some1().start(); // 방법2 호출 new Thread(new Some2()).start(); Thread Basic ## 쓰레드: 비동기식 // # 특징: // 프로세스 내에서 실행되는 독립적인 실행 흐름 // 쓰레드는 프로세스 내에서 실행되며, 하나의 프로세스는 여러 개의 쓰레드를 가질 수 있습니다. // 프로세스 내에서 코드를 병렬로 실행하고, 서로 공유하는 메모리 공간을 가짐 // --> 데이터를 공유하며 효율적으로 작업을 수행할 수 있습니다 // ** 프로세스: // 운영 체제에서 실행 중인 프로그램의 인스턴스 // --> 각 프로세스는 자체 메모리 공간과 리소스를 가집니다. // 1. 기존방법 class Test{ public void rrr() { System.out.println("하이"); } // 1. 기존방법 : 메서드 호출 등등... 내가 이전에 하던 모든것은 다 동기식!(= 스레드가 아님) Tes.. 이전 1 다음