16장
|
|
- 태은 목
- 6 years ago
- Views:
Transcription
1 16 네트워크 O b j e c t i v e s TCP/IP 프로토콜의개념을이해한다. 자바의소켓포트의개념을이해한다. 서버클라이언트통신프로그램의구조를이해한다. 서버소켓과클라이언트소켓을구분하여이해한다. URL 객체와 URLConnection 객체를활용할줄안다. 소켓프로그래밍을이해한다. 간단한채팅프로그램소스를통해소켓통신을이해한다.
2 C H A P T E R JAVA PROGRAMMING 네트워크 16.1 TCP/IP TCP/IP 프로토콜소개 TCP 프로토콜 IP(Internet Protocol) 프로토콜 TCP 프로토콜은 Transmission Control Protocol의약자로다른두시스템간에신뢰성있는데이터의전송을관장하는통신프로토콜로서 IP(Internet Protocol) 프로토콜위에서동작한다. TCP 프로토콜을사용하는응용프로그램으로는 , FTP, 웹 (HTTP) 등이있다. IP는패킷교환네트워크에서송신호스트와수신호스트가데이터를주고받는것을관장하는프로토콜로서 TCP의하위레벨프로토콜이다. TCP/IP 프로토콜및 , 웹응용프로그램의관계는 [ 그림 16-1] 과같다. 응용프로그램 (HTTP, , FTP 등 ) Transport (TCP, ) Network (IP, ) Link ( 디바이스 드라이버, ) [ 그림 16-1] 네크워크계층 IP 주소 IP 주소 IP 주소는네트워크상에서유일하게식별될수있는네트워크장치의주소로서, 예를들면 와같이4개의숫자가. 으로연결된다. 하나의숫자범위는 0~255로서한바이트로표현이가능하다. IP 주소는마치전화번호나집주소와같아이주소를통해네트워크에연결되어있는장치를식별할수있으며, 동일한주소를
3 제 16 장네트워크 CHAPTER 여러네트워크장치에중복해서사용할수없다. 숫자로된주소는기억하기어려우므로 사용자가문자열로구성된도메인이름을사용하면 DNS(Domain Name Server) 에의해숫자로구성된 IP 주소로자동변환되게된다. 현재는 4개의숫자로표현된 IP 주소를표현하기위해 32비트의 IP 버전 4(IPv4) 가사용되고있다. 그러나엄청난네트워크장치의증가로각장치에고유하게부여할수있는 IP 주소가고갈됨에따라 128비트의 IP 버전 6(IPv6) 이점점널리사용되는추세이다. 자신의 IP 주소는간단히 localhost라는이름으로사용해도된다. localhost의 IP 주소는 로지정되어있다. 도메인이름 localhost 내컴퓨터의 IP 주소확인하기윈도우 PC에서명령창을열어 ipconfig 명령을수행하면 [ 그림 16-2] 와같이컴퓨터에할당된 IP 주소를확인할수있다. ipconfig [ 그림 16-2] 내컴퓨터 IP 주소확인 포트 IP는네트워크상의컴퓨터또는시스템을식별한다. 한컴퓨터내에서는여러응용프로그램이네트워크를사용하고있기때문에, IP 주소만가지고는통신하는응용프로그램을식별할수없다. 이경우한컴퓨터내의각응용프로그램은통신을위해가상
4 788 JAVA 자바프로그래밍 JAVA PROGRAMMING 의연결단인포트 (port) 를생성하고이포트번호로자신을식 별하게한다. 즉, IP 주소는아파트의동번호와같다고볼수 있으며, 포트번호는같은아파트동에있는호번호와같다고 볼수있다. 다른예로 IP 주소는은행지점의주소라할수있 으며, 포트번호는은행내의고객창구번호와같다고할수 있다. 따라서통신을수행하는모든응용프로그램은포트를 이용하여상대방프로그램과데이터를교환한다. 물론상대방 응용프로그램은자신의 IP 주소와포트번호를사전에알고 있어야한다. 응용프로그램과포트사용사례는 [ 그림 16-3] 과같다. 포트 컴퓨터 2 포트 포트 컴퓨터 1 응용프로그램 응용프로그램 1 응용프로그램 2 2 인터넷 2 응용프로그램 2 응용프로그램 응용프로그램 3 [ 그림 16-3] 응용프로그램이자신의포트를이용한통신 잘알려진포트 포트번호는응용프로그램개발자가임의로선택하여사용할수있으나, 기존응용프로그램에서이미사용하고있는포트번호나시스템의포트번호는피하는것이좋다. 시스템혹은기존에잘알려진응용프로그램에서사용하는포트번호를잘알려진포트 (well-known ports) 라고한다. 주로 0~1023 사이의번호를가지므로이범위의포트번호는피하도록한다. 예를들어, Telnet은 23번포트, HTTP는 80번포트, FTP는 21번포트를사용하므로사용자가작성하는응용프로그램에서는이러한포트번호는피해서선택해야한다. CHECK TIME TCP 상에서동작하는응용프로그램을나열하라. IP 주소와포트에대해설명하라. 하나의응용프로그램은반드시하나의포트만사용하여야하는가? 현재자신의컴퓨터의 IP 주소가얼마인지확인하라.
5 제 16 장네트워크 CHAPTER 16.2 URL 을이용한웹프로그래밍 URL 이란? 컴퓨터로가장흔히하는일이웹서핑 (web surfing) 인데우리가사용하고있는웹브라우저의주소창에입력하는서핑주소가바로 URL이다. [ 그림 16-4] 는네이버의 URL 이다. URL은 Uniform Resource Locator의약자로서인터넷상의자원 ( 리소스 ) 에대한주소를의미한다. 웹브라우저에직접 URL을입력할수도있고웹페이지의링크를클릭하면웹브라우저가해당 URL을브라우저에로드하여보여주기도한다. URL URL [ 그림 16-4] 웹브라우저주소창의 URL URL 구조 URL은 [ 그림 16-5] 와같이프로토콜식별자와자원이름으로구성되어있다. 프로토콜식별자와자원이름은콜론 (:) 으로구분되며자원이름은이중슬래시 (//) 로시작한다. 프로토콜식별자자원이름
6 790 JAVA 자바프로그래밍 JAVA PROGRAMMING http : // 프로토콜 식별자 (protocol identifier) 자원 이름 (resource name) [ 그림 16-5] URL 구조 프로토콜식별자 프로토콜식별자프로토콜식별자는인터넷상의자원을가져올때사용되는통신프로토콜이름이다. 우리가흔히웹이라고부르는것은 HTTP(HyperText Transfer Protocol) 라는프로토콜을사용하는데, 모든홈페이지주소에 http가들어있는것은이때문이다. 이외에도 FTP(File Transfer Protocol), TELNET(TELecommunication NETwork) 등과같은프로토콜이프로토콜식별자로사용될수있다. 실제대부분의브라우저들은 HTTP 외다른프로토콜도지원하는데, [ 그림 16-6] 은브라우저에서 FTP 프로토콜을이용하여 FTP 서버에접속한예이다. [ 그림 16-6] 브라우저에서 FTP 프로토콜을이용하여서버에접속
7 제 16 장네트워크 CHAPTER 자원이름자원이름은사용되는프로토콜에따라서그구성이달라진다. HTTP를예로들면자원이름은 [ 그림 16-7] 과같이호스트이름, 파일이름, 포트번호등으로구성되나, 대부분의웹사이트의홈페이지는호스트주소만으로자원이름이구성된다. 자원이름 http : // /index.html :8080 호스트 이름파일 이름포트 번호 [ 그림 16-7] HTTP 의자원이름 자바의 URL 클래스 자바의 API 중에서 java.net 패키지에포함된 URL 클래스는웹상의자원을지정하는 URL정보를나타낸다. 생성자 URL 클래스의주요생성자는다음과같다. URL(String spec) 문자열 spec이지정하는자원에대한 URL 객체생성 URL(String protocol, String host, int port, String file) 프로토콜식별자 protocol, 호스트주소 host, 포트번호 port, 파일이름 file이지정하는자원에대한 URL 객체생성 메소드 URL 클래스의주요메소드는 < 표 16-1> 과같다. 메소드 Object getcontent() 이 URL 의컨텐트를리턴 설명 < 표 16-1> URL 클래스의주요메소드 String getfile() 이 URL 의파일이름리턴 String gethost() 이 URL 의호스트이름리턴 String getpath() 이 URL 의경로부분리턴 int getport() 이 URL 의포트번호리턴
8 792 JAVA 자바프로그래밍 JAVA PROGRAMMING String getprotocol() 이 URL 의프로토콜이름리턴 InputStream openstream() URL 주소와연결한뒤이연결로부터입력받을수있는 InputStream 객체리턴 URLConnection openconnection() URL 주소의원격객체에접속한뒤통신할수있는 URLConnection 객체리턴 URL 클래스를이용하여연결된상대편으로부터데이터를읽을때는그전에먼저 openstream() 메소드를이용하여입력스트림을연다. 그러고나면일반적인입력스트림에서읽듯이데이터를읽어온다. URL 객체생성 절대경로상대경로 상대편과통신하기위해서는사전에상대편의주소를가진 URL 객체를생성하여야한다. URL 객체는 URL의주소와 URL 클래스의생성자를이용하여생성한다. URL 객체를생성하는방법에는상대편에대한절대경로를이용하는방법과상대경로를이용하는방법이있다. 다음은절대경로로 URL 객체를생성하는방법이다. URL homepage = new URL(" 다음은이미생성된 URL 객체를이용하여이 URL에대한상대경로로새로운 URL 객체를생성하는방법이다. URL opinion = new URL(homePage, "opinion/editorial.htm"); opinion 이라는 URL 은결국다음주소를의미한다. " URL 객체를생성할때잘못된주소의 URL을입력하면 MalformedURLException 예외가발생하므로 try-catch 문으로예외처리를해야한다.
9 제 16 장네트워크 CHAPTER URL 파싱하기 예제 16-1 URL 클래스를이용하여 URL을구성하는프로토콜이름, 호스트주소, 포트번호등각부분을파싱해보자 import java.net.*; public class ParseURL { public static void main(string[] args) { URL opinion = null; URL homepage = null; try { homepage = new URL( ); // 절대경로로 URL 객체생성 opinion = new URL(homePage, opinion/editorial.htm ); // 상대경로로 URL 객체생성 catch (MalformedURLException e) { System.out.println( 잘못된 URL입니다. ); System.out.println( protocol = + opinion.getprotocol()); // 프로토콜출력 System.out.println( host = + opinion.gethost()); // 호스트이름출력 System.out.println( port = + opinion.getport()); // 포트번호출력 System.out.println( path = + opinion.getpath()); // 경로부분출력 System.out.println( filename = + opinion.getfile()); // 파일이름출력 실행 결과 protocol = http host = news.hankooki.com port = 80 path = /opinion/editorial.htm filename = /opinion/editorial.htm URL 객체를이용하여상대편으로부터데이터읽기 URL 객체를생성한것만으로원격지와연결되지는않는다. 원격지와연결하고원격지로부터데이터를가져오기위해서는 URL의 openstream() 메소드를이용하여야한다. 그리고 openstream() 이리턴하는 InputStream 객체를이용하여스트림입력을수행해야한다. openstream()
10 794 JAVA 자바프로그래밍 JAVA PROGRAMMING 예제 16-2 URL 주소에서데이터읽기 http 프로토콜로 사이트에접속한뒤 웹페이지는모두텍스트데이터이다 import java.net.*; import java.io.*; public class URLRead { public static void main(string[] args) { try { URL aurl = new URL( ); // URL 객체생성 BufferedReader in = new BufferedReader(new InputStreamReader(aURL. openstream())); // URL 객체에서입력스트림생성 String inputline; while ((inputline = in.readline())!= null) // 한행씩읽음 System.out.println(inputLine); in.close(); catch (IOException e) { System.out.println( URL에서데이터를읽는중오류가발생했습니다. ); URLRead 자바 프로그램을실행하면 에서보내주는 html 문서를출력한다.
11 제 16 장네트워크 CHAPTER URLConnection 클래스 URLConnection 클래스는주어진원격지의주소 URL에네트워크접속후데이터를보내거나받을수있도록한다. 앞서설명한 URL 클래스와기능이비슷하지만보다효과적이다. URLConnection 객체를생성하는방법은다음두가지이다. URLConnection 클래스 URL.openConnection() 을이용하는방법 URLConnection 생성자를이용하는방법 URL.openConnection() 이용우선첫번째방법은다음과같이사용할수있다. URL aurl = new URL(" URLConnection uc = aurl.openconnection(); // 원격지와연결한다. uc는네이버사이트에연결된 URLConnection 객체이며이객체를사용하여네이버사이트의정보를전송하거나받을수있다. URLConnection 생성자이용두번째방법은다음과같이생성자를이용하여 URLConnection 객체를만들고 connect() 메소드를이용하여원격지와연결하는방법이다. URL aurl = new URL(" URLConnection uc = new URLConnection(aURL); uc.connect(); // 원격지와연결한다. 이방법은연결하기전에여러가지인자들과요청과관련된속성들을설정할수있다. 실제 URL에대한연결은 URLConnection 객체의 connect() 메소드를호출하여자바프로그램과 URL의네트워크상연결을설정하는것이다. 메소드 URLConnection 클래스의주요메소드는 < 표 16-2> 와같다. 메소드 abstract void connect() Object getcontent() String getcontentencoding() 설명 URL에의해참조되는외부리소스와통신연결설정 URL 연결에서컨텐트를가져옴컨텐트인코딩필드를리턴 < 표 16-2> URLConnection 클래스의주요메소드
12 796 JAVA 자바프로그래밍 JAVA PROGRAMMING int getcontentlength() String getcontenttype() boolean getdoinput() boolean getdooutput() InputStream getinputstream() OutputStream getoutputstream() URL geturl() void setdoinput(boolean doinput) void setdooutput(boolean dooutput) 컨텐트길이필드리턴컨텐트타입필드리턴 URLConnection 객체의 doinput 필드값리턴 URLConnection 객체의 dooutput 필드값리턴설정된연결에서데이터를읽을입력스트림리턴설정된연결로데이터를출력할출력스트림리턴 URLConnection 객체의 URL 필드값리턴 URLConnection 객체의 doinput 필드값설정 URLConnection 객체의 dooutput 필드값설정 URLConnection 클래스에는 doinput과 dooutput 필드가있는데모두 boolean 타입이다. doinput이 true로설정되면 URLConnection 객체로표현되는 URL 연결이입력을위해사용됨을의미하며, dooutput이 true로설정되면출력을위해사용됨을의미한다. URL 객체와달리 URLConnection 객체는데이터를보낼수도있는것에유의하자. URLConnection 객체를이용하여원격지데이터받기 URLConnection 객체를이용하여데이터를가져오는방법은 URL 객체와매우유사하 다. URLConnection 객체에서 getinputstream() 메소드를이용하여입력스트림을얻은후에스트림입력을수행하면된다. 예제 16-3 URLConnection 으로원격지데이터읽기 URLConnection 객체를이용하여 import java.io.*; import java.net.*; public class URLConnectionReader { public static void main(string[] args) { try { URL aurl = new URL( ); // URL 객체생성 URLConnection uc = aurl.openconnection(); // URL 객체에서 URLConnection 객체생성 BufferedReader in = new BufferedReader(new InputStreamReader(uc. getinputstream())); // 입력스트림생성 String inputline;
13 제 16 장네트워크 CHAPTER while ((inputline = in.readline())!= null) // 한행씩읽음 System.out.println(inputLine); in.close(); catch (IOException e) { System.out.println( URL에서데이터를읽는중오류가발생했습니다. ); URLConnection 객체를이용하여원격지로데이터보내기 앞절에서와같이 URL 객체나 URLConnection 객체를이용하여웹서버에서데이터를읽어오는방법을 HTTP GET이라고하는데, 웹브라우저에서의동작의대부분은 HTTP GET이라할수있다. 이에반해웹서버에데이터처리를요청할때처리될데이터를같이보낼수있는데이방법을 HTTP POST라고한다. HTTP POST를이용하면서버에폼 (form) 데이터나파일을업로드할수도있으며, 함께보내진데이터를서버가처리한후다시클라이언트에응답을보내게된다. 서버에서데이터를읽어오는것은 HTTP GET과다르지않다. URLConnection 객체는 URL 객체와달리 HTTP POST 방식으로서버에데이터를전송할수있으며, 이것이 URL과 URLConnection의가장큰차이이다. HTTP POST에대한이해를돕기위해 [ 그림 16-8] 을보자. HTTP GET HTTP POST
14 798 JAVA 자바프로그래밍 JAVA PROGRAMMING [ 그림 16-8] 폼이포함된웹페이지 이그림은성 (last name) 과이름 (first name) 을입력하는필드가있는 HTML 폼 (form) 이다. 이두필드에데이터를입력한후 send 버튼을누르면웹서버로요청과함께필드에입력한데이터를전송하는데, 이것이 HTTP POST이다. 가장흔하게볼수있는폼이포함된웹페이지는회원가입페이지나실명확인페이지와같이여러필드에데이터를입력하는페이지이다. 웹서버는전송받은데이터를처리하며, 이에따른웹페이지를구성하여요청한클라이언트에응답을보낸다. URLConnection 객체가데이터를쓴다는것은바로 HTTP POST 방식으로웹서버에요청과함께데이터를보내는것을의미한다. 서버에데이터를보내기위해서는다음과같은단계가필요하다. 1. URL 생성 2. URL 객체에서 URLConnection 객체얻기 3. setdooutput() 메소드로 dooutput 필드를 true로설정 4. connect() 메소드로연결설정 5. 연결에서출력스트림얻기 6. 출력스트림에데이터출력 7. 출력스트림닫기
15 제 16 장네트워크 CHAPTER URLConnection 을이용하여웹서버에데이터보내기 예제 16-4 URLConnection 객체를이용하여웹서버에데이터를보내고웹서버로부터응답데이터를받아화면에출력하는응용프로그램을작성하라 import java.io.*; import java.net.*; public class URLConnectionWriter { public static void main(string[] args) { try { URL aurl = new URL( ); // POST가가능한사이트 URL 객체생성 URLConnection uc = aurl.openconnection(); // URLConnection 객체생성 uc.setdooutput(true); // 출력모드설정 OutputStreamWriter out = new OutputStreamWriter(uc.getOutputStream()); // 출력스트림생성 out.write( Firstname=Kitae&Lastname=Hwang ); // 서버에데이터보내기 out.close(); BufferedReader in = new BufferedReader(new InputStreamReader(uc. getinputstream())); // 서버에서응답을읽기위한입력스트림생성 String inputline; while ((inputline = in.readline())!= null) // 한행씩읽음 System.out.println(inputLine); in.close(); catch (IOException e) { System.out.println( URL에데이터를입출력중에오류가발생했습니다. ); 서버에 보내는 인자는 '&' 로 구분한다. 웹 서버에 post 데이터를 보낸 후웹 서버로부터 받은 응답 데이터. 이 데이터는 html 문서이다.
16 800 JAVA 자바프로그래밍 JAVA PROGRAMMING CHECK TIME 를나타내는 URL 객체를생성하라. 1 번에서생성한 URL 객체에서 URLConnection 객체를획득하는코드를작성하라. 2 번에서생성한 URLConnection 객체에서입력스트림을얻어와서해당 URL 의내용을콘솔에출력하는코드를작성하라 소켓프로그래밍 소켓 소켓 Socket 앞절의URL이나 URLConnection 객체를이용한웹프로그래밍에서서버와통신할때는간단히입출력스트림을생성하여데이터를주고받았다. 연결이어떻게설정되는지, 어떤포트를사용하는지, 서버와클라이언트가어떤순서로통신하는지등자세히신경쓸필요가없었다. 그러나개발자가서버와클라이언트사이의통신을보다자세히제어하거나 TCP 프로토콜상에서동작하는새로운응용프로토콜을만들어통신을하기원하는경우에는직접소켓을이용하여프로그래밍을해야한다. 자바에서소켓을이용하여데이터통신을하려면소켓 (Socket) 클래스를이용한다. 소켓은네트워크상에서통신하는두응용프로그램간의양방향통신링크의한쪽끝을의미한다. [ 그림 16-9] 와같이소켓은특정포트번호에연결되어있어데이터를보내거나받을때해당응용프로그램을식별할수있다. 웹 브라우저 소켓 포트 인터넷 포트 소켓 웹 서버 [ 그림 16-9] 소켓이용
17 제 16 장네트워크 CHAPTER 보통정보를제공하는쪽을서버라고부르며, 이정보를이용하는쪽을클라이언트라고부른다. 통신은클라이언트에서먼저서버에접속하여서비스를요청하는방식으로이루어지고, 서버는데이터나서비스를제공하는방식으로이루어진다. 자바소켓에는서버소켓과클라이언트소켓이있다. 클라이언트소켓은클라이언트를위한것이며, 서버소켓은서버응용프로그램을위한것이다. 서버클라이언트클라이언트소켓서버소켓 소켓을이용한서버클라이언트통신프로그램의구조이절에서는서버클라이언트의통신구조를전체적으로묘사하고자하며, 구체적인내용은다음절에서설명한다. 소켓을이용하여통신하는서버클라이언트의전형적인구조는 [ 그림 16-10] 과같다. 클라이언트응용프로그램은 Socket 클래스를이용하여소켓객체를생성하고서버와통신하며, 서버응용프로그램은 ServerSocket 클래스를이용하여소켓객체를생성하고클라이언트와통신한다. 서버는클라이언트의접속을받기위해서버포트에대한요청을기다린다. 이때클라이언트에서서버 IP의주소와서버가기다리는포트번호를가지고서버에접속한다. 서버는 accept() 메소드에서클라이언트와통신하는전용소켓을하나따로생성하여접속된클라이언트와통신한다. 서버는서버소켓을클라이언트와통신하는목적으로사용하지않고클라이언트로부터의접속을받는목적으로만사용한다. 서버는클라이언트가접속할 때마다 accept() 메소드에서따로전송소켓을생성하여클라이언트와통신하도록한다. 통신이끝나면소켓을닫는다. ServerSocket Socket clientsocket = new Socket( 서버 IP, 서버 port); 접속 listener = new ServerSocket( 서버 port); Socket socket = listener.accept(); Socket clientsocket.getoutputstream(); socket.getinputstream(); clientsocket 을 이용하여 데이터 입출력 socket 을 이용하여 데이터 입출력 clientsocket.close(); socket.close(); 클라이언트 서버 [ 그림 16-10] 소켓을이용한서버클라이언트통신프로그램의전형적인구조
18 802 JAVA 자바프로그래밍 JAVA PROGRAMMING Socket 클래스, 클라이언트소켓 Socket Socket은 java.net 패키지에포함되어있는클래스로서클라이언트소켓을구현한다. 즉, 서버와통신하기위해클라이언트응용프로그램에서사용하는소켓이다. Socket 의생성자와메소드는각각 < 표 16-3>, < 표 16-4> 와같다. Socket 클래스의생성자는연결할서버의 IP 주소 ( 또는도메인주소 ) 와포트번호를인자로받아서새로운 Socket 객체를생성한다. 클라이언트자신의주소와포트번호가아님에주의하자. 이제 Socket 클래스를이용하여클라이언트응용프로그램을작성하는방법을자세히살펴보자. 클라이언트소켓생성및서버접속상대편서버의 IP 주소가 이고상대편포트번호가 5550이면다음과같이클라이언트소켓객체를생성한다. Socket clientsocket = new Socket(" ", 5550); Socket 객체가생성되면곧바로 의주소로자동접속이이루어진다. 네트워크입출력스트림생성소켓이만들어지고서버와연결이된후에는 Socket 클래스의 getinputstream() 과 getoutputstream() 메소드를이용하여서버와설정된네트워크연결을다음과같이데이터스트림으로만든다. BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())); in, out 객체를이용하여일반스트림을입출력하는방식과동일하게네트워크데이터를입출력한다. 서버로데이터전송이제앞서만들어진스트림 out을통해데이터를전송한다. 다음은 hello 문자열을서버로전송하는코드이다. out.write("hello"+"\n"); out.flush();
19 제 16 장네트워크 CHAPTER out.flush() 를호출하면스트림속의데이터를남기지않고즉각모두전송한다. 서버로부터데이터수신앞서만들어진스트림 in을통해서버로부터데이터를수신할수있다. 다음은각각서버로부터한개의문자를입력받는코드와한행의문자열을입력받는코드이다. int x = in.read(); // 서버로부터한개의문자수신 String line = in.readline(); // 서버로부터한행의문자열수신 네트워크접속종료데이터송수신을모두수행하고네트워크의접속을종료하고자하면다음과같이한다. clientsocket.close(); 생성자 Socket(InetAddress address, int port) Socket(String host, int port) 설명소켓을생성하여지정된 IP 주소 (address) 와포트번호 (port) 에연결한다. 소켓을생성하여지정된호스트 (host) 와포트번호 (port) 에연결한다. 호스트이름이 null인경우는루프백 (loopback) 주소로가정한다. < 표 16-3> Socket 클래스의주요생성자 메소드 void close() 소켓을닫는다. 설명 < 표 16-4> Socket 클래스의주요메소드 void connect(socketaddress endpoint) InetAddress getinetaddress() InputStream getinputstream() InetAddress getlocaladdress() int getlocalport() int getport() OutputStream getoutputstream() boolean isbound() boolean isconnected() boolean isclosed() void setsotimeout(int timeout) 서버에연결연결한서버의주소리턴소켓에대한입력스트림리턴소켓이연결된로컬주소리턴소켓이연결된로컬포트번호리턴소켓이연결한서버의포트번호리턴소켓에대한출력스트림리턴소켓이로컬주소에연결되어있으면 true 리턴소켓이서버에연결되어있으면 true 리턴소켓이닫혀있으면 true 리턴데이터읽기타임아웃시간지정. 0이면타임아웃해제
20 804 JAVA 자바프로그래밍 JAVA PROGRAMMING ServerSocket 클래스, 서버소켓 ServerSocket 클래스 ServerSocket 클래스는서버소켓을구현한다. ServerSocket 클래스는 java.net 패키지에포함되어있으며 ServerSocket 클래스의생성자와메소드는각각 < 표 16-5>, < 표 16-6> 과같다. ServerSocket은클라이언트측으로부터연결요청을기다리는모니터링을위해사용되며서버가클라이언트의연결요청을수락하면 Socket 객체를새로생성한다. 이 Socket 객체를이용하여클라이언트와통신하게되므로, ServerSocket은일반적인데이터의송수신에는사용되지않는다. 서버소켓생성 ServerSocket 클래스의생성자는사용할포트번호를인자로받아서새로운 ServerSocket 객체를생성한다. 이포트번호는현재자신의포트번호이다. 이미사용중인포트번호를지정하면오류가발생한다. 5550번포트를사용하는서버소켓을생성하는예를들면다음과같다. ServerSocket serversocket = new ServerSocket(5550); 클라이언트로부터접속기다림 ServerSocket 클래스의 accept() 메소드를이용하여클라이언트로부터의연결요청을기다린다. accept() 메소드는연결요청이오면다음과같이새로운 Socket 객체를리턴한다. Socket socket = serversocket.accept(); 서버에서클라이언트와의데이터통신은새로만들어진 Socket 객체를통해서이루어진다. 그러므로 ServerSocket 클래스는 Socket 클래스와달리주어진연결에대해입출력스트림을만들어주는메소드가없다. 네트워크입출력스트림생성 accept() 메소드에서얻은 Socket 객체의 getinputstream() 과 getoutputstream() 메소드를이용하여클라이언트와설정된네트워크연결을다음과같이데이터스트림으로만든다. BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
21 제 16 장네트워크 CHAPTER in, out 객체를이용하여일반스트림을입출력하는방식과동일하게네트워크데이터를입출력한다. 클라이언트로부터데이터수신앞서만들어진스트림 in을이용하여클라이언트로부터데이터를수신할수있다. 다음은각각클라이언트로부터한개의문자를입력받는코드와한행의문자열을입력받는코드이다. int x = in.read(); // 클라이언트로부터한개의문자수신 String line = in.readline(); // 클라이언트로부터한행의문자열수신 클라이언트로데이터전송앞서만들어진스트림 out을통해클라이언트로데이터를전송할수있다. 다음은 Hi!, Client 문자열을클라이언트로전송하는코드이다. out.write("hi!, Client"+"\n"); out.flush(); out.flush() 를호출하면스트림속의데이터를남기지않고즉각모두클라이언트로전송한다. 네트워크접속종료데이터송수신을모두수행하고네트워크의접속을종료하고자하면다음과같이한다. socket.close(); 서버응용프로그램종료더이상클라이언트의접속을받지않고서버응용프로그램을종료하고자하는경우다음과같이 ServerSocket을종료시킨다. serversocket.close(); 생성자 ServerSocket(int port) 지정된포트번호 (port) 와결합된소켓을생성한다. 설명 < 표 16-5> ServerSocket 클래스의주요생성자
22 806 JAVA 자바프로그래밍 JAVA PROGRAMMING < 표 16-6> ServerSocket 클래스의주요메소드 메소드 설명 Socket accept() 연결요청을기다리다요청이들어오면수락하고 Socket 객체리턴 void close() 서버소켓을닫는다. InetAddress getinetaddress() int getlocalport() boolean isbound() boolean isclosed() void setsotimeout(int timeout) 서버소켓에연결된로컬주소리턴서버소켓이연결요청을모니터링하는포트번호리턴서버소켓이로컬주소에연결되어있으면 true 리턴서버소켓이닫혀있으면 true 리턴 accept() 에대한타임아웃시간지정. 0이면타임아웃해제 잠깐! 통신프로그램을작성하기위해서는운영체제가지원하는 TCP/IP 라이브러리를굳이사용할필요가없다. 소켓의등장으로인해통신프로그램개발자는매우편리해졌다. 소켓은자바뿐만아니라거의모든언어에라이브러리로지원되는공통적인개념이므로자바의소켓을알면다른언어의소켓라이브러리역시이해하기쉽다. 독자들이통신프로그램을작성한다고하면일단무조건소켓을생각하고여기서부터시작하면된다 서버 - 클라이언트채팅예제 예제개요서버와클라이언트가번갈아채팅문자를보내는간단한채팅프로그램예제를통해자바에서소켓을이용하여어떻게클라이언트와서버간에데이터를주고받는지실습해보기로한다. 본예제에서사용할채팅프로그램은다음과같다. 서버와클라이언트가 1:1로채팅 서버와클라이언트간의메시지구분을위해서버는메시지앞에 서버 > 를접두어로붙여메시지를전송하며, 클라이언트는 클라이언트 > 를접두어로붙여메시지를전송 서버와클라이언트가번갈아가면서메시지전송및수신 클라이언트가 bye를보내면프로그램종료
23 제 16 장네트워크 CHAPTER 클라이언트 > 안녕? 너도 안녕 서버 화면 연결 요청 새로운 소켓으로 연결 안녕? 서버 > 너도 안녕 bye 클라이언트 화면 클라이언트사용자가먼저 " 클라이언트 > 안녕?" 을보내자서버에서 " 서버 > 너도안녕?" 을보낸경우입니다. 클라이언트에서 "bye" 를보내서버와의연결을 서버 " 클라이언트 > 안녕?" 클라이언트 종료하였습니다. " 서버 > 너도 안녕?" "bye" [ 그림 16-11] 채팅예제실행흐름 ( 초록색글자는사용자의키입력임 ) 서버프로그램 다음절의채팅프로그램의전체소스를보기전에이절에서는단계별로서버프로그램작성에필요한내용을소스와함께설명한다. 서버소켓생성서버용자바응용프로그램에서는시스템에서사용되지않은포트번호 9999로서버소켓을생성한다. 서버소켓은다음코드와같이생성한다. ServerSocket listener = new ServerSocket(9999); 클라이언트요청대기서버소켓을생성한후생성된서버소켓으로연결요청이오는지모니터링하면서대기하는코드는다음과같다. Socket socket = listener.accept(); accept() 메소드는연결요청이오면수락과함께새로운 Socket 객체를생성하여새소켓으로클라이언트와통신하도록한다. 새로운소켓의포트번호는 9999가아니며자동으로할당된다. 클라이언트와통신을위한입출력스트림생성클라이언트와의데이터송수신은스트림을생성하여데이터를송수신한다. 데이터의종류에따라바이트스트림또는문자스트림을생성하여사용하면된다. 본예제의
24 808 JAVA 자바프로그래밍 JAVA PROGRAMMING 채팅과같이문자열을송수신하는경우는문자스트림을사용하며, 파일을전송하는경우는바이트스트림을사용한다. 본예제에서는효율적입출력을위하여버퍼스트림을사용한다. 설정된연결에서스트림을생성하는코드는다음과같다. BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 클라이언트로부터데이터수신 in 스트림생성이후부터는일반입력스트림에서데이터를입력받는방법과동일하다. 다음코드는입력스트림 in에서한행의데이터를수신하는코드이다. String inputmessage = in.readline(); 클라이언트에서한행의문자열을보내올때까지서버는어떤동작도하지않고기다린다. 클라이언트로데이터송신서버에서클라이언트로데이터를보내는방법은일반출력스트림에서데이터를출력하는방법과동일하다. 아래의코드는콘솔에서사용자로부터문자열을입력받아클라이언트로송신하는코드이다. BufferedReader stin = new BufferedReader(new InputStreamReader(System.in)); String outputmessage = stin.readline(); // 콘솔에서읽는다. out.write(" 서버 >" + outputmessage+" \n"); // 클라이언트로전송한다. out.flush(); flush() 메소드는스트림 out 에남아있는모든데이터를클라이언트로송신한다. 연결종료모든데이터의송수신이끝나서더이상의클라이언트와서버의연결이필요하지않은경우에는소켓을닫는다. 소켓을닫으면소켓의입출력스트림도같이닫힌다. 서버소켓을닫아버리면더이상의클라이언트연결요청을받을수없다는것에유의한다. 다음의코드는소켓과서버소켓을닫는코드이다.
25 제 16 장네트워크 CHAPTER socket.close(); // 통신소켓을닫는다. listener.close(); // 서버소켓을닫는다. 소켓또는서버소켓을닫으면여기에관련된모든자원이해제된다. 클라이언트프로그램 이절에서는단계별로클라이언트프로그램작성에필요한내용을소스와함께설명한다. 연결요청클라이언트의연결요청이있으면연결할서버의호스트주소와서버의포트번호로클라이언트소켓을생성한다. 다음은클라이언트소켓생성코드이다. socket = new Socket("localhost", 9999); 본예제에서는동일한컴퓨터내에서서버와클라이언트가동작하므로호스트이름으로 localhost 로지정하였다. localhost 는현재프로그램이실행되는컴퓨터를의미한다. 만약서버가다른컴퓨터에서동작한다면서버의 IP 주소또는도메인이름을지정하면된다. 서버와통신을위한입출력스트림생성서버와의데이터송수신을위해스트림을생성한다. 클라이언트측에서도송수신되는데이터의종류에따라바이트스트림또는문자스트림을생성하여사용한다. 이예제에서는효율적입출력을위하여버퍼스트림을사용한다. 클라이언트소켓으로부터입출력을위한스트림을생성하는코드는다음과같다. BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 서버에데이터송신스트림생성이후는일반출력스트림에서데이터를출력하는방법과동일하다. 다음코드는콘솔에서입력받은문자열을서버로송신하는코드이다.
26 810 JAVA 자바프로그래밍 JAVA PROGRAMMING BufferedReader stin = new BufferedReader(new InputStreamReader(System.in)); String outputmessage = stin.readline(); // 콘솔에서읽는다. out.write(" 클라이언트 >"+outputmessage+" \n"); // 서버로전송한다. out.flush(); flush() 메소드는스트림에남아있는모든데이터를서버로송신한다. 서버로부터데이터수신스트림생성이후는일반입력스트림에서데이터를입력받는방법과동일하다. 다음의코드는서버에서한행의문자열을보내올때까지어떤동작도하지않고기다리는것을나타낸다. String inputmessage = in.readline(); 연결종료모든데이터의송수신이끝나서더이상의서버와연결이필요하지않은경우에는소켓을닫는다. 소켓을닫으면소켓의입출력스트림도같이닫힌다. 다음의코드는소켓을닫는코드이다. socket.close(); 소켓을닫으면여기에관련된모든자원이해제된다. 클라이언트서버채팅소스코드 예제전체소스코드는다음과같다. 서버프로그램 ServerEx.java import java.io.*; import java.net.*; public class ServerEx { public static void main(string[] args) { BufferedReader in = null; BufferedReader stin = null;
27 제 16 장네트워크 CHAPTER BufferedWriter out = null; ServerSocket listener = null; Socket socket = null; try { listener = new ServerSocket(9999); // 서버소켓생성 socket = listener.accept(); // 클라이언트로부터연결요청대기 System.out.println(" 연결됨 "); in = new BufferedReader(new InputStreamReader(socket. getinputstream())); // 클라이언트로부터의입력스트림 stin = new BufferedReader(new InputStreamReader(System.in)); // 키보드로부터의입력스트림 out = new BufferedWriter(new OutputStreamWriter(socket. getoutputstream())); // 클라이언트로의출력스트림 String inputmessage; while (true) { inputmessage = in.readline(); // 클라이언트에서한행의문자열읽음 if (inputmessage.equalsignorecase("bye")) // 클라이언트가 "bye" 를보내면연결종료 break; System.out.println(inputMessage); // 클라이언트가보낸메시지화면에출력 String outputmessage = stin.readline(); // 키보드에서한행의문자열읽음 out.write(" 서버 >" + outputmessage+"\n"); // 키보드에서읽은문자열전송 out.flush(); catch (IOException e) { System.out.println(e.getMessage()); finally { try { socket.close(); // 클라이언트와통신용소켓닫기 listener.close(); // 서버소켓닫기 catch (IOException e) { System.out.println(" 클라이언트와채팅중오류가발생했습니다.");
28 812 JAVA 자바프로그래밍 JAVA PROGRAMMING 클라이언트프로그램 ClientEx.java import java.io.*; import java.net.*; public class ClientEx { public static void main(string[] args) { BufferedReader in = null; BufferedReader stin = null; BufferedWriter out = null; Socket socket = null; try { socket = new Socket("localhost", 9999); // 클라이언트소켓생성 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 서버로부터의입력스트림 stin = new BufferedReader(new InputStreamReader(System.in)); // 키보드로부터의입력스트림 out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); // 서버로의출력스트림 String outputmessage; while (true) { outputmessage = stin.readline(); // 키보드에서한행의문자열읽음 if (outputmessage.equalsignorecase("bye")) { // "bye" 가입력되면메시지전송후연결종료 out.write(outputmessage); out.flush(); break; out.write(" 클라이언트 >"+outputmessage+"\n"); // 키보드에서읽은문자열전송 out.flush(); String inputmessage = in.readline(); // 서버에서한행의문자열읽음 System.out.println(inputMessage); // 서버가보낸메시지화면에출력 catch (IOException e) { System.out.println(e.getMessage()); finally { try { socket.close(); // 클라이언트소켓닫기 catch (IOException e) { System.out.println(" 서버와채팅중오류가발생했습니다.");
29 제 16 장네트워크 CHAPTER 서버 - 클라이언트채팅예제실행 이제만든예제를실행해보자. 예제를실행하기위해서는서버와클라이언트를위해각각명령창을하나씩생성한다. 다음과같은순서로진행한다. 1. 명령창을하나열고서버프로그램을먼저실행시켜클라이언트의연결요청을기다린다. [ 그림 16-12] 와같다. 서버 [ 그림 16-12] 서버가먼저실행되어클라이언트로부터연결을기다리고있는서버명령창 2. 서버프로그램을실행한후에 [ 그림 16-13] 과같이다시다른명령창을열어클라이언트프로그램을실행하고서버와연결을설정한다. 연결이설정되면 [ 그림 16-14] 와같이서버의명령창에는 연결됨 이출력된다. 클라이언트 [ 그림 16-13] 클라이언트프로그램을실행한클라이언트명령창
30 814 JAVA 자바프로그래밍 JAVA PROGRAMMING 서버 [ 그림 16-14] 클라이언트와접속된서버명령창 3. 채팅은클라이언트에서먼저시작하여순서대로메시지를번갈아주고받는다. [ 그림 16-15], [ 그림 16-16] 은각각클라이언트와서버의실행화면이다. 클라이언트사용자가 안녕? 을콘솔에입력하면 클라이언트 > 안녕? 을서버로전송하고서버에서는받은문자열을그대로출력한다. 그리고 [ 그림 16-15] 와같이서버에서사용자로부터입력받은 너도안녕? 문자열에 서버 > 를덧붙여클라이언트로전송한다. 서버 [ 그림 16-15] 클라이언트로부터 클라이언트 > 안녕? 을받아출력하고사용자로부터메시지를입력받아전송하는서버명령창 클라이언트 [ 그림 6-16] 서버로부터 서버 > 너도안녕? 메시지를전송받아출력하는클라이언트명령창
31 제 16 장네트워크 CHAPTER 4. 클라이언트에서 bye 를입력하여채팅종료채팅을종료하기위해서는클라이언트에서 bye 를서버에게전송하면된다. 사용자가 bye 를입력하면이문자열을그대로서버에게보내채팅을종료한다. [ 그림 16-17] 은 bye 문자열을입력받아서버로보내는과정이다. [ 그림 16-18] 은클라이언트로부터 bye 문자열을받고종료한서버의화면이다. 클라이언트 [ 그림 16-17] 클라이언트가사용자로부터 bye 를입력받고서버로전송. 클라이언트종료 서버 [ 그림 16-18] 클라이언트로부터 bye 를전송받아서버프로그램종료 서버소켓에스트림을생성하는메소드가없는이유를설명하라. 연결이설정된클라이언트소켓에서바이트입출력스트림을생성하는코드를작성하라. CHECK TIME
32 816 JAVA 자바프로그래밍 JAVA PROGRAMMING SUMMARY 요약 TCP 프로토콜은다른두시스템간에신뢰성있는데이터의전송을관장하는프로토콜이며, IP는패킷교환네트워크에서송신호스트와수신호스트가데이터를주고받는것을관장하는프로토콜이다. IP 주소는네트워크상에서유일하게식별될수있는숫자로구성된주소이다. 포트는시스템내부에수행되는여러프로그램간에통신을위한가상의연결단으로서통신할프로그램을식별한다. URL은 Uniform Resource Locator의약자로서인터넷상의리소스에대한주소를의미한다. URL 클래스는웹상의자원을지정하는 URL을나타낸다. URL 객체를이용하여데이터를가져올때는 openstream() 메소드를이용하여일반적인스트림입력을수행한다. URLConnection 객체를이용하여 URL이지정하는외부리소스에데이터를읽고쓸수있다. 소켓은네트워크상에서수행되는두프로그램간의양방향통신링크의한쪽끝을의미하며포트에연결된다. 자바소켓에는서버소켓인 ServerSocket 클래스와클라이언트소켓인 Socket 클래스가있다. 클라이언트소켓인 Socket 객체는연결할서버의 IP 주소또는도메인주소와포트번호를인자로받아서생성한다. 서버소켓인 ServerSocket 객체는연결요청을모니터링할포트번호를인자로받아서생성한다. ServerSocket 객체는연결요청만모니터링하며연결이이루어진후에는 Socket 객체를리턴하여이객체를통해클라이언트와통신한다. 연결이설정된후에는소켓에서스트림을만들고일반스트림입출력과동일하게데이터를입출력한다. 연결을종료할때는소켓의 close() 메소드로소켓을닫는다. 서버소켓을닫으면더이상의연결요청을모니터링하지않는다.
33 제 16 장네트워크 CHAPTER Open Challenge 스레드를이용한서버 - 클라이언트채팅 본문에서다루었던서버-클라이언트채팅예제를스레드와스윙컴포넌트를이용하여확장해보자. 본문의예제는단일스레드로동작되므로서버와클라이언트가순서대로번갈아가면서메시지를주고받았으나, 스레드를이용하면순서에상관없어자유롭게메시지를서로주고받을수있다. 메시지를입력하는도중상대방메시지가수신되어출력되면전송할메시지와전송된메시지가섞여서알아보기어려우므로 GUI를만들어상대방메시지를출력하는창과상대방에게보낼메시지를입력하는창을분리하도록하고메시지출력창에는자기가입력한메시지와상대방에게서전송받은메시지모두출력되도록한다. 본문예제와달리 "bye" 라는메시지로끝내지않으며어느한쪽이접속을끊으면프로그램이종료되도록한다. 실행예시화면은다음과같다. CharServer.java 를 먼저실행한 후에 ChatClient.java 를실행한다.
34 818 JAVA 자바프로그래밍 JAVA PROGRAMMING 연습문제 EXERCISE 이론문제 1. 응용프로그램계층의프로토콜이아닌것은? 1 HTTP 2 TELNET 3 FTP 4 UDP 2. 윈도우 PC 의명령창에서내 PC 의 IP 주소를확인하는명령은? 3. 다음 URL에대한설명중틀린것은? 1 URL은 Unified Resource Locator의약자이다. 2 URL은프로토콜식별자와자원이름으로구성된다. 3 인텃넷상의자원에대한주소를나타낸다. 4 프로토콜식별자로는 HTTP만이사용가능하다. 4. URL 객체 myhomepage 는내홈페이지를나타내는 URL 객체라고하자. 내홈페이지밑 의 photo/index.html은내가찍은사진을보여주는페이지라고하면이페이지를나타내는새로운 URL 객체를 myhomepage 객체를이용하여생성하라. 5. 다음은지정된 URL에서데이터를읽어들이는프로그램이다. 아래소스에서빈칸을채워라. import java.io.*; import java.net.*; public class Example { public static void main(string[] args){ URL aurl; try { aurl = new URL(" InputStreamReader in = new InputStreamReader( );
35 제 16 장네트워크 CHAPTER int c; while ((c = in.read())!= -1) System.out.print((char)c); in.close(); catch (MalformedURLException e) { System.out.println(" 잘못된 URL형식입니다."); catch (IOException e) { System.out.println(" 입출력오류가발생했습니다."); 6. 다음프로그램의출력을나타내라. import java.net.url; public class Example { public static void main(string[] args) throws Exception { URL myhome = new URL(" URL gayo = new URL(myHome,"music/gayo/index.html"); System.out.println(gayo.getHost()); System.out.println(gayo.getFile()); 7. 웹서버에폼데이터나파일을업로드할때사용하는클래스는? 8. 다음코드에대한설명으로틀린것은? Socket so = new Socket(" ", 5050); 1 클라이언트소켓객체를생성한다. 2 클라이언트가접속할서버의주소는 이다. 3 생성된클라언트소켓의포트번호는 5050이다. 4 소켓객체가생성되면자동으로서버주소로자동접속이이루어진다.
36 820 JAVA 자바프로그래밍 JAVA PROGRAMMING 9. 다음은소켓을이용한네트워크프로그래밍에서클라이언트와서버가데이터통신하는과정이다. 2번에서필요한메소드는? 1 서버는특정포트번호로서버소켓생성 2 서버는클라이언트연결요청기다림 3 클라이언트는접속할서버주소와포트로클라이언트소켓생성하여서버에접속 4 서버와클라이언트모두소켓에서입출력스트림생성 5 서버와클라이언트데이터송수신 6 네트워크접속종료 실습문제 1. URLConnection 클래스를이용하여네이버홈페이지의데이터를읽어화면에출력하는프로그램을작성하라. 2. 클라이언트에서키입력한내용이그대로서버콘솔에출력되는프로그램을작성하라. 클라이언트가 끝 을입력하면클라이언트와서버모두종료하라. 3. 클라이언트에서산술연산을서버에보내면서버는연산을수행하여결과를클라이언트에전송하는프로그램을작성하라. 연산자는 +, -, *, / 으로제한하며피연산자및결과는 double 타입의숫자로한다. 서버에수식을전송할때 = 은포함하지않는다. 4. 클라이언트에서서버로바이너리파일을전송하여서버에똑같은사본을저장하는프로그램을작성하라. 클라이언트와서버는다음과같은간단한프로토콜을이용하라. 편의상클라이언트는서버에게명령과인자를오류없이전송하는것으로간주하고오류복구를위한재전송은없는것으로한다. 명령 (1 바이트 ) FILE_NAME(0x00) 명령인자 첫 4 바이트 ( 파일이름바이트크기 ), 파일이름 FILE_SIZE(0x01) 파일크기 (8 바이트 ) SEND_BEGIN(0x02) SEND_END(0x03) 인자없음 인자없음
<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A
학습목표 자바의소켓포트의개념을이해한다 네트워크프로그래밍 클라이언트통신프로그램의구조를이해한다 소켓과클라이언트소켓을구분하여이해한다 11 주소켓 - 애코김문정 tops@u1.ac.kr 2 포트 (port) 데이터송수신창구 0~65536 (0~1024 : well-known port) ServerSocket 클래스 ( 소켓 ) ServerSocket 클래스에사용되는클래스
More informationPowerPoint 프레젠테이션
명품 Java Essential 1 2 학습목표 1. 소켓통신에대한이해 2. 자바로간단한소켓통신프로그램작성 TCP/IP 소개 3 TCP/IP 프로토콜 두시스템간에데이터가손상없이안전하게전송되도록하는통신프로토콜 TCP 에서동작하는응용프로그램사례 e-mail, FTP, 웹 (HTTP) 등 TCP/IP 특징 연결형통신 한번연결후계속데이터전송가능 보낸순서대로받아응용프로그램에게전달
More informationMicrosoft PowerPoint - java2-lecture7.ppt [호환 모드]
TCP/IP 소개 Application Layer (HTTP, FTP, SMTP, Telnet, ) Networking 514770 2018 년가을학기 11/12/2018 박경신 TCP/IP 프로토콜 Application Layer SMTP(Simple Mail Transfer Protocol), Telnet, FTP(File Transfer Protocol),
More informationMicrosoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]
- Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소
More informationMicrosoft PowerPoint - 03-TCP Programming.ppt
Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):
More informationMicrosoft PowerPoint - [EEL2] Lab10.pptx
Lab10 (Week 13) 네트워크프로그래밍 전자공학실험 2 Week13: 실습과제 (Lab10) Lab10 #1~#4 실습일실습시간종료시까지이메일로제출 이메일제목 : [EEL2] Lab10-Part1 Lab10 #5~#7 다음주실습시간시작시하드카피 ( 리포트 ) 로제출 리포트제목 : [EEL2] Lab10-Part2 최소 1 시간은실습실에서실습을진행해야합니다.
More information<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 25 장네트워크프로그래밍 이번장에서학습할내용 네트워크프로그래밍의개요 URL 클래스 TCP를이용한통신 TCP를이용한서버제작 TCP를이용한클라이언트제작 UDP 를이용한통신 자바를이용하여서 TCP/IP 통신을이용하는응응프로그램을작성하여봅시다. 서버와클라이언트 서버 (Server): 사용자들에게서비스를제공하는컴퓨터 클라이언트 (Client):
More informationMicrosoft PowerPoint - 04-UDP Programming.ppt
Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여
More information학습목표 네트워크개요 TCP PORT URL/InetAddress Socket/TCP 을이용한네트워크 2
Chapter 12 네트워크프로그래밍 New Java Programming with a Workbook 학습목표 네트워크개요 TCP PORT URL/InetAddress Socket/TCP 을이용한네트워크 2 Network 개요 네트워크 데이터전송프로토콜을가지고통신하는연결된장치들을총칭 네트워크망 3 TCP TCP (Transmission Control Protocol)
More information자바-11장N'1-502
C h a p t e r 11 java.net.,,., (TCP/IP) (UDP/IP).,. 1 ISO OSI 7 1977 (ISO, International Standards Organization) (OSI, Open Systems Interconnection). 6 1983 X.200. OSI 7 [ 11-1] 7. 1 (Physical Layer),
More information13-Java Network Programming
JAVA Programming Language JAVA Network Programming IP Address(Internet Protocol Address) URL(Uniform Resource Location) TCP(Transmission Control Protocol) Socket UDP(User Datagram Protocol) Client / Server
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More informationMicrosoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]
TCP Server/Client Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 TCP Server Program Procedure TCP Server socket() bind() 소켓생성 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write()
More information<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >
웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)
More information<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 24 장입출력 이번장에서학습할내용 스트림이란? 스트림의분류 바이트스트림 문자스트림 형식입출력 명령어행에서입출력 파일입출력 스트림을이용한입출력에대하여살펴봅시다. 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 스트림들은연결될수있다. 중간점검문제 1. 자바에서는입출력을무엇이라고추상화하는가?
More informationMicrosoft PowerPoint PythonGUI-socket
: 채팅프로그래밍 순천향대학교컴퓨터공학과 이상정 순천향대학교컴퓨터공학과 1 학습내용 인터넷구조 인터넷구성요소 인터넷주소 클라이언트 / 서버구조 소켓프로그래밍소개 파이썬소켓프로그래밍 TCP 클라이언트 / 서버프로그래밍 스레드소개 파이썬스레드 채팅클라이언트 / 서버프로그램 순천향대학교컴퓨터공학과 2 네트워크요소 네트워크가장자리 (edge) 호스트 : 클라이언트와서버
More information제1장 Unix란 무엇인가?
1 소켓 2 1 소켓 클라이언트 - 서버모델 네트워크응용프로그램 클리이언트 - 서버모델을기반으로동작한다. 클라이언트 - 서버모델 하나의서버프로세스와여러개의클라이언트로구성된다. 서버는어떤자원을관리하고클라이언트를위해자원관련서비스를제공한다. 3 소켓의종류 소켓 네트워크에대한사용자수준의인터페이스를제공 소켓은양방향통신방법으로클라이언트 - 서버모델을기반으로프로세스사이의통신에매우적합하다.
More informationPowerPoint Presentation
Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More informationThe Pocket Guide to TCP/IP Sockets: C Version
인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)
More information2009년 상반기 사업계획
소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More information(Microsoft PowerPoint - AUTCHEYREGRG.ppt [\310\243\310\257 \270\360\265\345])
자바네트워크프로그래밍 학습내용 네트워킹의개요와 java.net 패키지 인터넷주소와 URL TCP 소켓 UDP 소켓 2 네트워킹의개요와 java.net 패키지 자바는사용자가네트웍의세부구조를몰라도네트웍기능을편리하게사용할수있는기능들을 java.net 패키지로제공 사용자는 java.net 패키지에서제공되는클래스들을이용하여네트워킹관련프로그램을작성 3 1. 네트워킹의개요와
More informationThe Pocket Guide to TCP/IP Sockets: C Version
얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow
More informationNetwork Programming
Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI
More information파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter
파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 클래스의사용법은다음과같다. PrintWriter writer = new PrintWriter("output.txt");
More information(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])
예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More informationclass InetAddress3{ public static void main(string[] args) throws Exception{ String url = null ; Scanner reader = new Scanner(System.in); System.out.p
네트워크프로그램작성 -네트워크예제는새로운프로젝트를만든후에패키지르만들지않은상태에서작성한다. -프로그램의컴파일과실행은 명령프롬프트 에서한다. -자바파일의컴파일은 javac 파일이름.java" 와같이실행한다. -컴파일되어생성된클래스파일의실행은 java 파일이름 와같이실행한다. -소켓을이용한프로그램은항상 요청을받는역할 의프로그램과 요청을보내는역할 의프로그램이존재하므로,
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More informationThe Pocket Guide to TCP/IP Sockets: C Version
인터넷프로토콜 03 장 도메인네임시스템과주소 패밀리 (IPv4-IPv6 서비스 ) 1 목차 제 3 장도메인네임시스템과주소패밀리 3.1 도메인네임주소를숫자주소로매핑하기 3.2 IP 버전에무관한주소-범용코드의작성 3.3 숫자주소에서도메인네임주소획득하기 2 getaddrinfo() 를활용한주소 범용 (Generic) 코드 주소범용 (Generic) 코드란? 주소버전
More informationJAVA PROGRAMMING 실습 09. 예외처리
2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오
More informationgnu-lee-oop-kor-lec06-3-chap7
어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base
More informationMicrosoft PowerPoint - Java7.pptx
HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)
More informationq 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2
객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More informationPowerPoint 프레젠테이션
명품 JAVA Essential 1 2 학습목표 1. 자바의입출력스트림에대한이해 2. 텍스트파일입출력 3. 바이너리파일입출력 4. File 클래스로파일속성알아내기 5. 파일복사응용사례 자바의입출력스트림 3 자바의입출력스트림 입출력장치와자바응용프로그램연결 입력스트림 : 입력장치로부터자바프로그램으로데이터를전달하는객체 출력스트림 : 자바프로그램에서출력장치로데이터를보내는객체
More information게시판 스팸 실시간 차단 시스템
오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP
More information목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공
메신저의새로운혁신 채팅로봇 챗봇 (Chatbot) 입문하기 소 이 메 속 : 시엠아이코리아 름 : 임채문 일 : soulgx@naver.com 1 목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper
More informationJava ...
컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.
More informationMicrosoft Word - src.doc
IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...
More informationPowerPoint 프레젠테이션
배효철 th1g@nate.com 1 목차 표준입출력 파일입출력 2 표준입출력 표준입력은키보드로입력하는것, 주로 Scanner 클래스를사용. 표준출력은화면에출력하는메소드를사용하는데대표적으로 System.out.printf( ) 를사용 3 표준입출력 표준출력 : System.out.printlf() 4 표준입출력 Example 01 public static void
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationPowerPoint 프레젠테이션
Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용
More informationPowerPoint 프레젠테이션
Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조
More informationrmi_박준용_final.PDF
(RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:
More informationPowerPoint Presentation
객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리
More informationAPI STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum
API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date
More informationJSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른
JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른 URL로바꿀수있다. 예 ) response.sendredirect("http://www.paran.com");
More information12-file.key
11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,
More information슬라이드 1
UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More informationPowerPoint 프레젠테이션
예외처리 배효철 th1g@nate.com 1 목차 예외와예외클래스 실행예외 예외처리코드 예외종류에따른처리코드 자동리소스닫기 예외처리떠넘기기 사용자정의예외와예외발생 예외와예외클래스 구문오류 예외와예외클래스 구문오류가없는데실행시오류가발생하는경우 예외와예외클래스 import java.util.scanner; public class ExceptionExample1
More informationMicrosoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]
소켓개요 참고문헌 : 컴퓨터네트워크프로그래밍, 김화종, 홍릉과학출판사 Socket 정의 Socket 은 Transport 계층 (TCP 나 UDP) 을이용하는 API 1982 년 BSD 유닉스 41 에서처음소개 윈도우즈의경우 Winsock 제공 JAVA 또한 Socket 프로그래밍을위한클래스제공 Socket Interface 의위치 5-7 (Ses, Pre,
More information쉽게 풀어쓴 C 프로그래밊
Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.
More information4장.문장
문장 1 배정문 혼합문 제어문 조건문반복문분기문 표준입출력 입출력 형식화된출력 [2/33] ANSI C 언어와유사 문장의종류 [3/33] 값을변수에저장하는데사용 형태 : < 변수 > = < 식 > ; remainder = dividend % divisor; i = j = k = 0; x *= y; 형변환 광역화 (widening) 형변환 : 컴파일러에의해자동적으로변환
More informationMicrosoft PowerPoint 웹 연동 기술.pptx
웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우
More informationSecure Programming Lecture1 : Introduction
Malware and Vulnerability Analysis Lecture4-1 Vulnerability Analysis #4-1 Agenda 웹취약점점검 웹사이트취약점점검 HTTP and Web Vulnerability HTTP Protocol 웹브라우저와웹서버사이에하이퍼텍스트 (Hyper Text) 문서송수신하는데사용하는프로토콜 Default Port
More information쉽게
Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의
More information1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과
1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas
More informationMicrosoft Word - PLC제어응용-2차시.doc
과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,
More information<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>
i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,
More informationNetwork Programming
Part 4 자바네트워크프로그래밍 1. Java IO 2. 스레드 (Thread) 클래스의소개 3. Java Socket 1. 자바입출력 Java_source->src->ch11 1.0 I/O Stream
More informationCluster management software
자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException
More informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More informationDesign Issues
11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance
More information2장 변수와 프로시저 작성하기
Chapter. RequestDispatcher 활용 요청재지정이란? RequestDispatcher 활용 요청재지정구현예제 Chapter.9 : RequestDispatcher 활용 1. 요청재지정이란? 클라이언트로부터요청받은 Servlet 프로그램이응답을하지않고다른자원에수행흐름을넘겨다른자원의처리결과를대신응답하는것또는다른자원의수행결과를포함하여응답하는것을요청재지정이라고한다.
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?
More informationJava
Java http://cafedaumnet/pway Chapter 1 1 public static String format4(int targetnum){ String strnum = new String(IntegertoString(targetNum)); StringBuffer resultstr = new StringBuffer(); for(int i = strnumlength();
More informationJAVA PROGRAMMING 실습 02. 표준 입출력
자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(
More information본 강의에 들어가기 전
네트워크프로그래밍 02 장 TCP 소켓 (1) 1 목차 제 2장 TCP 소켓 1. IPv4 TCP 클라이언트 2. IPv4 TCP 서버 3. 소켓의생성과해지 4. 주소지정 5. 소켓에연결 6. 소켓을주소에바인딩하기 7. 클라이언트의연결요청처리 8. 데이터주고받기 9. IPv6의사용 2 소켓통신과정 간략화한소켓통신과정 소켓생성 TCP or UDP 소켓에주소정보할당
More information제11장 프로세스와 쓰레드
제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드
More informationMicrosoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx
2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html
More informationPowerPoint Presentation
객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리
More informationThe Pocket Guide to TCP/IP Sockets: C Version
1 목포해양대해양컴퓨터공학과 UDP 소켓 네트워크프로그램설계 4 장 2 목포해양대해양컴퓨터공학과 목차 제 4장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송신및수신 4.4 UDP 소켓의연결 3 목포해양대해양컴퓨터공학과 UDP 소켓의특징 UDP 소켓의특성 신뢰할수없는데이터전송방식 목적지에정확하게전송된다는보장이없음.
More informationPowerPoint Presentation
객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More information파일로출력하는작업순서 1. 파일을연다. 2. 파일로자료를쓴다. 3. 파일을닫는다. 파일입출력에사용되는클래스들. FileInputStream, FileOutputStream, FileReader, FileWriter 문자단위로입출력하기 사람이읽을수있는문자로만구성된파일을읽
파일다루기 1 데이터는이곳에서저곳으로흘러간다. - 즉, 데이터는스트림 (stream) 이되어서일렬로이곳에서저곳으로이동한다. - 자바프로그램에서입출력되는모든데이터는스트림형태로주고받는다. 키보드에서입력되는데이터나모니터로출력되는데이터, 파일로부터읽은데이터, 파일로출력하는데이터들도모두스트림형태이다. - 스트림은흐르는방향에따라입력스트림 (input stream) 과출력스트림
More informationMicrosoft PowerPoint - 웹프로그래밍_ ppt [호환 모드]
목차 웹프로그래밍 내장객체의개요 내장객체의종류 11 주차 7 장 JSP 페이지의내장객체와영역 2 내장객체 (Implicit Object) JSP 페이지에서제공하는특수한레퍼런스타입의변수사용하고자하는변수와메소드에접근선언과객체생성없이사용할수있음 내장객체 내장객체 request response out session application pagecontext page
More information혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가
혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에
More informationgnu-lee-oop-kor-lec10-1-chap10
어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class
More information2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.
10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1
More informationMicrosoft PowerPoint PythonGUI-network
순천향대학교컴퓨터공학과 이상정 순천향대학교컴퓨터공학과 1 학습내용 인터넷구조 인터넷구성요소 인터넷주소 클라이언트 / 서버구조 소켓프로그래밍소개 파이썬소켓프로그래밍 TCP 클라이언트 / 서버프로그래밍 쓰레드소개 파이썬쓰레드 채팅클라이언트 / 서버프로그램 네트워크그리드셀예 네트워크연결그리드그리기 순천향대학교컴퓨터공학과 2 구성요소로본인터넷 (1) 호스트 (host),
More informationCluster management software
자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 File Class File 클래스 파일의읽고쓰기를제외하고파일과디렉토리에대한필요한많은기능등을제공 파일과디렉토리의정보를조사하고, 이들을생성및삭제하는메소드등이 File 클래스에포함 File 클래스의생성자 File(File parent, String child) File(String pathname)
More information02 C h a p t e r Java
02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER
More information서비스) 와서버( 관리대상서버) 간에자격증명을사용하여서로의 ID 를확인하고서로주고받는데이터를검사하고암호화하는프로세스 이다. 높은인증수준은일반적으로성능의저하를가져올수있지만높은 수준의보안과데이터무결성을제공한다. 기본값 - 관리대상서버에설정되어있는 DCOM 인증수준기본 값을
설정매뉴얼 연결설정 연결을하기위해서는클라이언트와서버에 Windows Management Instrumentation, Remote Procedure Call(RPC) 서비스 가설치및실행되고있어야한다. Windows Management Instrumentation 서비스는 굳이실행시킬필요는없다. 요청이들어올경우자동실행되므로 연결및쿼리는 DCOM 을사용한다. DCOM은
More informationvi 사용법
네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o
More informationSpring Boot/JDBC JdbcTemplate/CRUD 예제
Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More information비긴쿡-자바 00앞부속
IT COOKBOOK 14 Java P r e f a c e Stay HungryStay Foolish 3D 15 C 3 16 Stay HungryStay Foolish CEO 2005 L e c t u r e S c h e d u l e 1 14 PPT API C A b o u t T h i s B o o k IT CookBook for Beginner Chapter
More informationTEST BANK & SOLUTION
TEST BANK & SOLUTION 어서와자바는처음이지!" 를강의교재로채택해주셔서감사드립니다. 본문제집을만드는데나름대로노력을기울였으나제가가진지식의한계로말미암아잘못된부분이있을것으로사료됩니다. 잘못된부분을발견하시면 chunik@sch.ac.kr로연락주시면더좋은책을만드는데소중하게사용하겠습니다. 다시한번감사드립니다. 1. 자바언어에서지원되는 8 가지의기초자료형은무엇인가?
More informationChapter 4 UDP 소켓 사용법
Chapter 4 UDP 소켓사용법 개요 소켓이란 (Unix 소켓 ) 소켓의구조 소켓의유형 UDP 에대한이해 교재 Chapter 4.1 UDP 클라이언트 교재 Chapter 4.2 UDP 서버 교재 Chapter 4.3 UDP 소켓을이용한 송신및수신 소켓이란? Socket 은통신을위한끝점 (endpoint) 을생성하여파일에대한 open 과유사한방식으로기술자
More informationJUNIT 실습및발표
JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More informationMicrosoft PowerPoint - Lect04.pptx
OBJECT ORIENTED PROGRAMMING Object Oriented Programming 이강의록은 Power Java 저자의강의록을사용했거나재편집된것입니다. Class 와 object Class 와객체 클래스의일생 메소드 필드 String Object Class 와객체 3 클래스 클래스의구성 클래스 (l (class): 객체를만드는설계도 클래스로부터만들어지는각각의객체를특별히그클래스의인스턴스
More informationConnection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET
135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26
More information제11장 자바 입출력
제11 장자바입출력 Java_surce->src->ch11 I/O Stream gic 자바입출력 2 서버와클라이언트의소켓준비 자바입출력 3 11.1.1 스트림개념 스트림 순서가있고, 길이가정해져있지않은데이터흐름종류 자바입출력 바이트 ( 바이너리, 숫자 ) 텍스트 ( 문자 )...InputStream...OutputputStream...Reader...Writer
More information