목록자바/자바 실습 (37)
seong
메세지 받기 여러 메세지 받는 방법 - 읽기, 쓰기를 반복 1. Server - 데이터 받기, 출력 Server에서 읽고 출력 하는 부분(br.readLine)을 while로 감싸준다. msg는 br.readLine하고 난 후 값을 담을 공간이다. (msg와 null을 비교 ) 만약 msg가 없다면 버퍼를 비우고 null과 비교 하기 때문에 항상 null이 될 것이다. 2. Client - 데이터 전송 , 쓰기 BufferReader로 데이터를 키보드로 입력 받아서 전송 (Scanner도 가능) 쓰고 전송하는 부분을 while로 감싸준다. Server package sock.ex01; import java.io.BufferedReader; import java.io.InputStreamReader; im..
통신의 기본은 소켓 통신이다 Server Socket 서버 소켓은 클라이언트로 부터 메세지, 연결 요청이 오기만을 기다린 후 연결 요청이 오면 클라이언트와 연결을 하고, 다른 소켓을 생성한다. 서버 서버 소켓 클라이언트의 연결 요청이 들어온다. 서버와 서버 소켓은 연결을 끊고 클라이언트와 연결을 한다. 서버 클라이언트 Client Socket 서버 프로그램에 연결을 요청하고, 데이터를 전송한다. 3. 실행(서버, 클라이언트 모두실행 해주어야 한다.) 소켓 작성 할때 버퍼의 타겟은 소켓의 데이터가 입출력 되어야 한다. 서버의 연결을 바꾸고 싶다면 localhost의 주소를 바꾸면된다 . 1. 서버 소켓.java package sock.ex01; import java.io.Buffe..
naver.com 홈페이지 내용 가져오기 package communication; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import javax.net.ssl.HttpsURLConnection; public class NaverProgram { public static void main(String[] args) { try { //url주소 URL url = new URL("https://www.naver.com"); // url을 연결 HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); // 데이터를 BufferRead..
스트림(Stream)이란? 순서가 있는 데이터의 연속적인 흐름을 의미한다. 스트림은 데이터가 생성되는 소스(source) 와 데이터를 소비하는 목적지(destination)를 가지고 있다. InputStream 데이터를 바이트 단위로 받아와 출력. 문자를 입력 받아 int형태로 number에 저장 number을 출력 문자 하나이기 때문에 문자 하나만 읽어온 후 통신을 종료. 단점 hello를 보내면 h만 보내는 단점이 있다. InputStream in = System.in; try { int number = in.read(); // 현재 코드에선 while로 키보드 입력을 기다리고있다. // 스트림은 데이터를 하나씩 끊어서 들어온다. // char은 문자 하나만 가능 -> A하나만 입력 System.ou..
예외처리 (Try- Catch) try문 안에서 예외(오류)가 발생하면 catch가 실행된다. finally은 예외의 발생 여부와 상관 없이 무조건 실행된다.(생략 가능) 예외 처리 할때 크게 두가지 경우가 있다. 1. 컴파일시 발생하는 예외 컴파일시 발생하는 예외는 코드에 빨간줄로 실시간으로 확인이 가능 하다. 2. 런타임시 발생하는 예외 런타임시 발생하는 예외는 코드에 에러는 나지 않고 제대로 실행은 했지만 콘솔창에서 나타나는 에러이다. 예제1 동물 s1 = new 강아지 () 현재 메모리에는 말티즈가 존재 하지 않는다. 강아지 s2 = (말티즈) s1 말티즈가 존재 하지 않지만 가르키려고 한다. 그래서 다운캐스팅시 오류가 발생하고, 아래의 for문이 실행 되지 못한다. 위의 코드를 try-catch..
상속이란? 이미 존재하는 클래스로부터 멤버들을 물려 받는 것이다. 상속은 부모를 물려받기 위해 사용한다.(꼭 상속만이 아니더라도 코드를 재사용 할 순 있다.) 상속을 사용하는 이유는 다형성 때문이라고 볼 수 있다. 다형성 먼저 다형성 전에 객체 지향의 특징 하나를 기억 해보자. 상태는 행위를 통해서 변경이 된다. 그리고 코드를 보면서 간단하게 이해를 하자. 1. 먼저 한국인은 아래 4가지 상태를 가진다. 2. 특징을 보니 아시아인도 머리색은 검정, 팔은 2개, 다리 2개를 가진다. 그럼 아시아인으로 우선 올려주자. 3. 지구인을 보니 모든 지구인은 다리가 2개, 팔이 2개를 가진다. 4. 상속을 시켜주게된다. 이후 다형성을 만족하는지 확인해 본다. 한국인은 아시아인 일 수 있는가 ? 만족 아시아인은 지구..
메소드란? 다른 언어에서는 함수 라고도 불린다 메소드는 어떠한 입력 값을 받아 그 입력값으로 행동을 실행한 후 결과를 도출 해내준다. 메소드를 작성하는 이유중 가장 큰 것은 유지보수가 쉬운 프로그램을 위해서이다. 메소드의 장점 한번 작성해 놓으면 재활용이 가능하다. 코드의 량이 줄어든다. 유지보수가 유리해진다. 메소드의 재활용 예시 0~4까지 출력문을 5번 반복하는 코드이다. 1. 메소드를 사용하지않고 반복한 코드 2. 메소드를 이용해 작성한 예시 한눈에 봐도 현저히 줄었다 , 만약 코드가 더 복잡하고 길다면 메소드는 더욱 필요 하다고 느낄것이다. 메소드의 입력과 출력(return) 메소드의 입력 Rec 메소드에 매개변수 (int num)값을 선언해 주었다. Rec 메소드 호출 할때 인자 값으로 5를 주..
생성자란? 클래스 안에 선언되어 객체가 생성될 때 필드에 초기값을 제공하고 필요한 초기화 절차를 실행 하는것이다. 특징 생성자의 이름 앞에 반드시 public가 존재 해야한다. 하나의 클래스 안에 생성자를 여러번 중복이 가능하다. 소스코드를 보면서 이해하는게 훨씬 이해가 잘된다. Car라는 객체를 생성 하고 필드에 color, speed, gear를 선언해주었다. 생성자 하나를 만들고 매개 변수로 color,speed,gear를 생성 해주었다. main에서 heap메모리에 car의 메모리 공간을 할당해준다. => Car car = new Car("red",10,2) 생성자의 매개 변수에 red, 10, 2가 할당된 후 필드에 초기화 시켜준다. this.color는 필드에 있는 private String ..