2008/07/19 14

URL - URLDecoder 클래스를 이용한 디코딩

URLDecoder 클래스를 이용한 디코딩 URLDecoder 클래스는 URLEncoder 클래스와 정반대의 목적으로 사용한다. URLDecoder 클래스는 URLEncoder 클래스에 의해서 특수문자로 변환된 문자열을 원래 형태의 문자열로 변환할 수 있기 때문이다. 특수문자로 변환된 문자열을 URLDecoder에 있는 정적 메소드인 decoder() 메소드의 인자로 넣으면, 원래 형태인 문자열을 반환해준다. 이러한 과정을 디코딩(decoding)이라고 한다. URLDecoder를 이용해서 디코딩하기 URLEncoderTest와는 정반대의 기능을 가진 프로그램이다. 전달받은 특수 문자로된 문자열을 원래의 형태로 변환해서 결과를 출력한다. import java.net.*; public class URLDe..

URL - URLEncoder를 이용한 문자열 변환

URLEncoder를 이용한 문자열 변환 아스키 문자가 아닌 문자열들을 특수한 문자들로 변환하는 것을 인코딩(encoding)이라고 부른다. 운영체제마다 일부 문자를 인식하는 방법이 틀리기 때문에 아스키 문자가 아닌 문자열들은 전부 특수한 문자들로 변환해서 사용할 필요가 있다. HTML 폼에 값을 입력한 후 확인 버튼을 누르면 브라우저가 변환을 시켜준다. 그러나 URLConnection 클래스 등을 이용해서 URL 주소가 가리키는 내용을 읽어올 때에는 사용자 쿼리를 사용자가 직접 변환시켜서 지정해줘야 할 필요가 있을 때도 있다. 전달해야할 값에 공백이 있을 때가 대표적인 경우다. URL 주소는 중간에 공백이 들어가는 것을 허용하지 않기 때문이다. 아스키 코드가 아닌 문자열을 특수한 문자열로 변환하기 UR..

URL - POST 방식으로 URL 주소 호출하기

POST 방식으로 URL 주소 호출하기 인터넷에 존재하는 많은 게시판 등에서 글을 폼에 입력한 후, 확인 버튼을 누르면 보통 POST 방식으로 정보가 웹 애플리케이션에게 전달된다. 회원 로그인 창에서 아이디와 암호를 입력할 때에도 마찬가지이다. POST 방식의 경우, 사용자 쿼리 길이에 대한 제한이 없고(반면에 GET 방식은 길이 제한이 있다), URL 주소에 사용자 쿼리가 표시되지 않는 장점이 있다. 사용자 쿼리가 URL 주소에 보여지지 않는다는 것은 HTML 폼에 아이디와 암호를 입력해서 로그인을 했을 때 보안상 좀더 유리함을 의미한다. 아이디와 암호를 입력해서 로그인했는데 URL 주소 물음표 뒤에 사용자 쿼리가 주소 창에 보이면 안되기 때문이다. 그렇지만 POST 방식은 GET 방식처럼 주소 입력 ..

URL - GET 방식으로 URL 주소 호출하기(사용자 쿼리 전달)

GET 방식으로 URL 주소 호출하기 다음(daum.net) 검색창에서 '사과'라고 입력하고 검색 버튼을 클릭한다. 검색어를 입력 한 후 검색 버튼을 클릭하면 주소창에 다음과 같이 변해있다. search.daum.net/cgi-bin/nsp/search.cgi?w=tot&q=%BB%E7%B0%FA URL 주소에서 물음표(?) 이하는 '사용자 쿼리'라고 했다. '사용자 쿼리'란 웹 어플리케이션에게 특정한 정보를 제공하는 것다. 다음과 같은 URL 주소를 브라우저에 입력한 후 엔터 키를 입력해본다. search.daum.net/cgi-bin/nsp/search.cgi?w=tot&q==수박 '수박'이란 단어로 검색된 결과가 나오는 것을 확인할 수 있다. 여기에서 알 수 있는 것은 "q=" 뒤에 검색어를 집어넣..

URL - URLConnection 클래스로 웹페이지 읽기

URLConnection 클래스로 웹페이지 읽기 URLConnection은 URL 주소의 내용을 읽어오거나, 반대로 URL 주소가 가리키는 웹 애플리케이션(CGI, 서블릿, JSP 등)에게 GET 방식이나 POST 방식으로 추가적인 정보를 전달할 수 있다. 그리고 웹 페이지의 내용을 읽어오는 것 외에도 반대로 웹 애플리케이션에 추가적인 정보를 전달해야 할 때가 있는데, 이때 POST 방식을 사용한다. 인터넷을 보면 게시판 보면 게시판에 자동으로 광고가 올라오는 것을 본 독자가 있을 것이다. 이러한 광고는 사람이 하나 하나씩 직접 입력하는 경우도 있지만, 보통은 자동으로 광고를 게시판에 올리는 프로그램을 이용한다. 이러한 프로그램은 HTML 폼의 Action에 지정되어 있는 웹 애플리케이션의 URL 주소에..

URL - 웹사이트 읽어오기(WebSpider)

URL 클래스를 이용해서 웹사이트 읽어오기 텔넷을 이용한 웹사이트 읽어오기 1. 윈도우 명령창을 실행한다. 2. 그림과 같이 telnet daum.net 80이라고 입력한 후 엔터 키를 입력한다. 3. GET / 라고 입력한 후 엔터키를 입력한다 이 때 키보드로 입력한 갑싱 화면에는 출력되지 않을 수도 있다. (보이지 않더라도 무조건 입력 후 엔터 키를 입력한다.) 4. 다음과 같이 daum.net의 HTML 태그가 출력되는 것을 확인 할 수 있다. 이는 웹 서버가 동작하는 80번 포트에 telnet 프로그램으로 접속한 후 '/' 디렉톨리의 내용을 GET 방식으로 보여 달라고 HTTp 프로토콜에 해당하는 문자열을 보낸 것이다. 그 결과 서버는 접속한 클라이언트가 텔넷 프로그램인 것은 모르고 웹 브라우저인..

URL - URL 주소 분석

URL URL은 Uniform Resource Location의 머리 글자로 인터넷에서 접근 가능한 자원의 주소를 일관되게 표현할 수 있는 형식을 말한다. 여기서 말하는 자원의 형태는 인터넷 응용 프로토콜에 따라 다를 수 있는데, 월드와이드웹 프로토콜인 HTTP를 사용하는 경우의 자원에는 HTML, 페이지, 이미지 파일, CGI나 자바 애플릿과 같은 프로그램, 기타 HTTP가 지원하는 다른 파일 등이 있다. URL은 자원에 접근하는데 필요한 프로토콜명, 인터넷에서 특정한 컴퓨터를 식별하기 위한 도메인명, 그리고 컴퓨터 파일의 위치를 계층적으로 나타낸 경로명 등으로 구성된다. URL 클래스 URL 클래스의 사용목적 URL 클래스는 URL 주소가 알맞은 형식의 URL 주소인지 검사하거나, URL 주소로부터 ..

UDP 프로그래밍 - 타임 서버와 클라이언트 작성

UDP를 이용한 타임 서버와 클라이언트 작성 타임 서버는 에코 서버와 동작하는 방법이 거의 비슷하다. 다른 점이 있다면 에코 서버의 경우에는 클라이언트가 전송할 데이터를 그대로 반송하는 반면, 타임 서버는 클라이언트가 시간에 대해서 요청을 보내면 서버의 시간을 구해서 시간에 대한 요청을 보낸 클라이언트에게 현재 시간에 대한 정보를 전송하게 된다. 타임 서버와 클라이언트의 경우에는 TCP보다는 UDP를 이용하는 것이 알맞다. 그 이유는 전송하는 데이터가 간단하고 빠르게 반응하게 하기 위해서인데, 강조한대로 TCP의 경우는 연결지향성이기 때문에 UDP보다 초기 응답시간이 느리기 때문이다. 컴퓨터 여러 대를 운용할 경우, 각각의 컴퓨터 시간이 항상 같게 설정하려면 여간 번거로운 일이 아니다. 이런 것을 해결하..

UDP 프로그래밍 - 에코 클라이언트 / 서버 프로그래밍

UDP를 이용한 에코 클라이언트 / 서버 프로그래밍 에코 서버 프로그래밍 import java.net.*; public class UDPEchoServer { public static void main(String[] args) { if(args.length != 1){ System.out.println("사용법 : java UDPEchoServer port"); System.exit(1); } int port = 0; try{ port = Integer.parseInt(args[0]); }catch(Exception ex){ System.out.println("port 번호는 양의 정수로 입력하여 주세요."); System.exit(1); } DatagramSocket dsock = null; try{..

UPD 프로그래밍

UDP를 이용한 프로그래밍 방법 UDP(User Datagram Protocol)는 데이터그램 통신 프로토콜이라고도 한다. UDP는 TCP와는 다르게 비연결성(connectionless) 프로토콜이다. 즉, TCP 처럼 미리 연결을 맺고 통신하는 방식이 아니다. 데이터그램은 보통 패킷(packet)이란 용어로 교체되어 사용된다. 패킷이란 인터넷 내에서 운반되어야 할 메시지 단위이다. UDP는 패킷을 보낼 때마다 수신측의 주소와 로컬 파일 설명자를 함께 전송해야 한다. 이런 이유로 UDP는 전송해야 할 데이터 외에 추가적인 데이터가 함께 전송되어야한다. 또한 UDP는 TCP와는 다르게 비연결성이기 때문에 패킷이 수신 측에 전송한 순서대로 도달하지 않는 문제가 발생할 수도 있다. (그러나 네트워크가 근거리일..