개인참고자료/자바(네트워크) 62

멀티캐스팅 - 채팅프로그램작성

채팅프로그램작성 TCP 방식을 이용한 채팅 클라이언트를 작성했다. 이번에 만들 채팅 클라이언트는 멀티캐스팅을 이용한 방식이다. TCP 방식의 경우에는 채팅을 하기 위해서 채팅 서버가 필요했다. 하지말 멀티캐스팅을 이용하면 서버가 필요없는 진정한 의미의 P2P 채팅 프로그램을 작성할 수 있다. TCP 방식의 채팅 프로그램에서 서버가 하는 가장 중요한 역할은 하나의 클라이언트가 문자열을 보내게 되면 접속한 모든 클라이언트에게 문자열을 전송하는 일이있었다. 그렇지만 멀티캐스팅을 이용하게 되면 사용자가 입력한 문자열을 다른 채팅 클라이언트에게 전송할 때에 서버를 거칠 필요 없이 불특정 다수의 클라이언트에게 문자열을 전송할 수 있다. 즉, 멀티캐스팅을 이용한 채팅 프로그램은 서버가 필요 없고 클라이언트만 있으면되..

멀티캐스트 - 간단한 인터넷 방송 클라이언트와 서버 구현

간단한 인터넷 방송 클라이언트와 서버 구현 멀티캐스팅을 이용한다는 것은 특정한 IP의 컴퓨터에게 정보를 전송한다는 것이 아니라 불특정 다수에게 정보를 전달한다는 것을 의미한다. 즉, 멀티캐스팅 서버는 패킷에 방송할 내용을 담아서 특정 IP가 아닌 불특정 다수에게 패킷을 전송하면 된다. 나머지 일은 라우터가 알아서 패킷을 전달하면 되는 것이다. 마치 공중파 방송이 불특정 다수에게 방송을 보내기 위해서 전파를 송신하는 것처럼 말이다. 따라서 클라이언트는 네트워크 내에 전달되는 패킷을 읽어들이는 역할만 수행하면 된다. 멀티캐스팅을 위한 서버는 기존의 UDP 방식의 서버 프로그래밍과 거의 같으며 클라이언트의 IP를 DatagramPacket에 지정하는 것이 아니라 멀티캐스트 그룹에 해당하는 Ip를 지정하는 부분..

멀티캐스트 - 멀티캐스트 백본(MBone)

멀티캐스트 백본 - MBone 멀티캐스트를 구현하려면 라우터가 멀티캐스트 패킷 라우팅을 지원해줘야 한다. 하지만 대부분의 라우터가 멀티캐스트 패킷 라우팅을 지원하지 않고 있다. 이런 이유로 멀티캐스트를 지원할 수 있도록 MBone이라는 실험용 멀티캐스트 프레임워크가 만들어지게 되었다. MBone은 실시간 오디오와 동영상을 전송할 수 있게 해주는 멀티 캐스트의 가상 네트워크라고 할 수 있다. MBone이 만들어지는 또 다른 이유는 현재의 인터넷 방송에 대한 문제점 때문이다. 현재의 인터넷 방송의 대다수는 멀티캐스팅 방식이 아닌 패킷을 송신자가 수신자에게 각각 보내는 방식인 유니캐스트 방식을 사용한다. 그렇기 때문에 송신을 하는 쪽에서는 아주 넓은 대역폭을 필요로 한다. 하지만 멀티캐스트 방식을 선택하게 되..

멀티캐스트 - 멀티캐스트 방식이란

멀티캐스트 멀티캐스트 방식은 마치 공중파 방송과 흡사한 특징이 있다. 공중파 방송이 전파를 발송하면, 안테나를 세운 TV나 라디오에서 방송을 수신할 수 있는 것과 같이, 멀티캐스트 방식은 네트워크 내에 패킷을 전송한 후 여러 개의 호스트들이 해당 패킷을 전송 받을 수 있게 하는 방식이다. 멀티캐스트 방식은 단 한가지만 제외하고 UDP 방식과 똑같은 방식을 취하고 있다. 다른 점이란 UDP는 패킷이 도착할 호스트를 하나만 지정하는 데 비해서, 멀티캐스트 방식은 목적지를 멀티 캐스트 그룹(Multicast Group)으로 지정한다는 점이다. 멀티캐스트 그룹이란 클래스 D(244.0.0.0~239.255.255.255)에 속하는 IP 주소를 말한다. 이 중에서 239로 시작하는 멀티캐스트 주소는 내부 지정용으..

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 프로토콜에 해당하는 문자열을 보낸 것이다. 그 결과 서버는 접속한 클라이언트가 텔넷 프로그램인 것은 모르고 웹 브라우저인..