본문 바로가기

JAVA

[JAVA] 소켓으로 서버에서 읽기(Client) 위 예제는 Telnet 프로토콜을 이용하여 미국 국립표준기술연구소(NIST)의 daytime 서버에 13번 포트에 현재시간에 대한 요청을 보낸 것이다. 이 결과에서 "57634 16-09-03 06:46:59 50 0 0 150.2 UTC(NIST)" 라인이 daytime 서버에서 전송된 것이다. 소켓의 InputStream 을 사용하여 읽으면, 바로 이 값이 반환된다. 그 외의 다른 줄은 유닉스 셸이나 텔넷 프로그램에 의해 출력된 것이다. 지금은 소켓을 사용하여 코드상에서 동일한 결과를 얻는 방법을 보도록 하자. 먼저 time.nist.gov의 13번 포트에 대한 소켓을 연다. Socket socket = new Socket("time.nist.gov", 13); 이 코드는 객체를 만들 뿐만 아니라 실.. 더보기
[JAVA] 소켓의 기능과 동작 소켓이란 두 호스트 사이의 연결을 말한다. 소켓은 아래와 같은 기본적인 7가지 기능을 수행한다. ⊙ 원격 장비에 연결하기(connect) ⊙ 데이터 보내기(send) ⊙ 데이터 받기(recv)⊙ 연결 닫기(close) ⊙ 포트 지정하기(bind)⊙ 수신 대기하기(listen)⊙ 지정된 포트에 대해 원격 장비의 연결 받아들이기(accept) 자바의 Socket 클래스는 위에 나열된 기능 각각에 해당하는 메소드를 제공하며, 앞의 네 개는 서버와 클라이언트 모두에서 사용되고, 나머지 세 개는 클라이언트의 접속을 대기하는 기능으로 서버에서만 사용된다. 자바 프로그램은 보통 다음과 같은 방법으로 클라이언트 소켓을 사용한다. ⊙ 프로그램은 Socket 클래스의 생성자를 사용하여 새로운 소켓을 만든다.⊙ 생성된 소켓.. 더보기
[JAVA] 데이터그램과 소켓의 개요 인터넷을 통해 전달되는 데이터는 데이터그램(datagram)이라고 불리는 일정한 크기의 패킷으로 전송된다. 각각의 데이터그램은 헤더(header)와 페이로드(payload)를 포함하고 있다. 헤더에는 수신할 곳의 주소와 포트, 패킷을 송신한 곳의 주소와 포트, 데이터 손상을 탐지하기 위한 체크섬, 그 밖에 신뢰할 수 있는 전송을 위해 필요한 정보들이 포함되어있다. 페이로드에는 데이터 자체가 들어 있다. 그러나 데이터그램은 길이가 제한되어 있기 때문에, 종종 데이터를 다수의 패킷으로 분할하고 목적지에서 재조립할 필요가 있다. 그리고 또한 전송 중에 하나 이상의 패킷이 손실되거나 손상되어 재전송이 필요하거나, 패킷이 보낸 순서대로 도착하지 않을 경우 재정렬이 필요한 경우도 있다. 이러한 경우를 모두 처리하기.. 더보기
[JAVA] 90도 회전 (Rotate) 5*5배열을 90도 회전하는 로직 a 배열을 90도 회전하여 b배열에 넣고 다시 b배열을 90도 회전하여 a에 넣어서180도 회전된 배열을 출력하기 실행 결과 package jungbo; public class T26Rotate {public static void main(String[] args) {int a[][] = new int[5][5];int b[][] = new int[5][5];int row, col;int i=1;for(row=0;row 더보기
[JAVA] 이분 검색(Binary Search) 정렬이 되어 있다는 가정 하에 시작해야 하며정렬이 되어있지 않다면 정렬하고나서 사용해야한다. 예제 배열{2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30} 실행 결과 package jungbo; import java.util.InputMismatchException;import java.util.Scanner; public class T25BinarySearch {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int array[] = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30};int target;while(true){try{Syst.. 더보기
JAVA 19일차 필기 새로운 클래스 L02ThreadSleep.java 생성package com.javalesson.ch19thread; class ThreadDemo extends Thread{int seq;public ThreadDemo(int seq){this.seq=seq;}public void run(){System.out.println(seq+"thread start");try {sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(seq+"thread end");}}//class end public class L02ThreadSleep {public static void main(String[] args) {for.. 더보기
[JAVA] 삽입 정렬(Insertion Sort) 예제 배열 {5, 4 , 7, 3, 6}1~4회전까지의 결과가 위와 같이 나오도록 해보자 package jungbo; public class T24InsertionSort {public static void main(String[] args) {int array[] = {5, 4, 7, 3, 6};int key;int i, j;int cnt;for(i=1;i=0;j--){if(array[j] 더보기
[JAVA] 순위(석차) 계산기 예제 배열 {50, 40, 70, 30, 60} 실행결과 - 1 -package jungbo; public class T23Ranking {public static void main(String[] args) {int score[] = {50, 40, 70, 30, 60};int rank[] = {1, 1, 1, 1, 1};int i, j;for(i=0; i 더보기
[JAVA] ㄹ자 출력 package javalesson.com.javalesson.ch01test; public class T02RectBasic {public static void main(String[] args) {int array[][] = new int[5][5];int row, col;int i=1;for(row=0;row 더보기
JAVA 18일차 필기 스레드(thread) package com.javalesson.ch19thread; import java.lang.Thread;//java.lang 패키지 -> Object, 기본데이터타입//->java를 구현하기 위한 가장 중요한 도구들을 모아 놓은 패키지//Thread는 아주아주 중요한 클래스 -> main() 1thread를 가지기 위해 public class L01Thread extends Thread{int num;public L01Thread(int num){this.num=num;}public void run() {//run() 실행할 코드를 작성하면 start() 메소드로 스레드를 생성한다System.out.println(num+"thread run");}public static void .. 더보기