소켓 프로그래밍 기법의 활용 (Using Socket Programming Techniques)
|
|
- 은우 반
- 6 years ago
- Views:
Transcription
1 소켓프로그래밍기법의활용 (Using Socket Programming Techniques) 윈도우에서의프로세스간통신기법으로는명명된파이프, DCOM, DDE, 클립보드와각종네트워크프로그래밍기법등을이용할수있다. 이중에서도윈도우 95 와윈도우 NT 3.5 버전부터는내부적인통신프로토콜로기존의 NetBIEU 와함께 TCP/IP 를사실상의표준으로인정하고이를지원하고있다. 또한, DCOM 과윈도우소켓을프로세스간통신의표준으로삼고있으며, 윈도우 NT 4.0 부터는윈도우소켓의 2.0 버전 (WinSock 2.0) 을사용하여보다강화된소켓프로그래밍을지원하게되었다. 이러한소켓프로그래밍을위해서는 Win32 에서지원하는 API 를직접이용하여프로그래밍을할수도있겠으나, 델파이에서지원하는소켓컴포넌트를이용하면쉽게소켓을지원하는어플리케이션을지원할수있다. 이번장에서는소켓컴포넌트를이용하는방법과소켓프로그래밍기법을익혀보도록한다. 소켓프로그래밍의기초 소켓이란네트워크프로토콜을구현할때여기에저장된데이터를포함한커다란집합에대한핸들이다. 쉽게말하면네트워크에대한파일핸들이라고생각하면된다. 네트워크프로그래밍의기본은 TCP/IP 연결을하고, 소켓을생성해서이를전송하거나받는것이다. 소켓에는원래서버용, 클라이언트용소켓이분리되어있는것은아니다. 그렇지만델파이에서는 TServerSocket, TClientSocket 으로분리된소켓을제공하고있다. 이들은모두 TCustomSocket 클래스에서상속받은것으로내부적으로는동일한소켓을사용하고, 사용방법도거의비슷하다. 서버가되는소켓은클라이언트측소켓과는달리클라이언트의연결요구를기다리는 listen 이라는작업을해야하고, 클라이언트는서버에연결 (connect) 해야한다. 여기서양측소켓의 Active 프로퍼티를 True 로설정하면서버와클라이언트가접속된다. 또한, TServerSocket 클래스에는여러개의클라이언트가접속되었을때이를관리할수있는기능을추가로가지고있다. IP 주소와포트 델파이의소켓컴포넌트에는 Address 와 Port 라는프로퍼티가있다. Address 프로퍼티는 IP 주소를나타내며, Port 프로퍼티는서버로들어오는메시지를통과시키는번호이다. 포트가없으면하나의서버컴퓨터에는하나의서버프로그램만설치할수있다. 포트번호
2 를이용해서동일한서버컴퓨터에여러개의서버프로그램을사용할수있다. 예를들어메일서버, 뉴스그룹서버, 웹서버, FTP 서버, 텔넷서버등의프로그램들은모두다른포트를사용한다. 이런포트번호중일반적으로사용되는서비스에관한것들이있는데 SMTP 는 25, NNTP 는 119, Telnet 은 23, FTP 는 21 을보통사용한다. 소켓과소켓연결 (Socket Connection) 소켓은네트워크어플리케이션이네트워크상의다른시스템사이를통신할수있도록도와주는도구가된다. 각각의소켓은하나의네트워크연결로생각할수있는데, 여기에는어플리케이션이실행되는시스템, 인터페이스종류, 연결에사용된포트에대한주소가있어야한다. 그러므로, 소켓연결에대해서충분히알기위해서는각연결부분에대한소켓의주소를반드시알아야한다. 이렇게소켓연결을하기전에연결부분을담당하게되는소켓에대한정보를제공해야하는데, 일부의정보는어플리케이션이실행되고있는시스템에서알아낼수있다. 예를들어, 각클라이언트소켓의로컬 IP 주소에대한정보는운영체제에서알아낼수있으므로따로제공할필요가없다. 따로제공해야하는정보는현재작업하고있는소켓의종류에따라달라지는데, 클라이언트소켓은연결하고자하는서버에대한정보를제공해야하며서버소켓은제공하는서비스를제공하는포트에대한정보를제공해야한다. 이러한소켓연결에대한정보에는 IP 주소와포트번호가모두포함된다. 호스트 (Host) 란? 호스트는소켓을포함한어플리케이션이동작하는시스템을말한다. 이렇게소켓에대한호스트를지정할때에는다음과같이표준인터넷주소로사용되는 IP 주소표기방식을많이사용한다 하나의시스템은하나이상의 IP 주소를지원하게된다. IP 주소는기억하기도어렵거니와알아보기도쉽지않기때문에, 호스트의이름을지정하는방식을같이사용하여이러한단점을극복한다. 이렇게이름으로된방식의 IP 주소에대한앨리어스를 URLs(Uniform Resource Locators) 라고하며, 다음과같은도메인이름과서비스를포함한형태가된다.
3 서버소켓은시스템에서로컬 IP 주소를알아낼수있기때문에호스트를지정할필요가없다. 만약로컬시스템이하나이상의 IP 주소를가지고있을경우에는서버소켓은모든 IP 주소에대한클라이언트의요구를이용한다. 서버소켓이연결되면클라이언트소켓은리모트 IP 주소를제공하게된다. 클라이언트소켓은반드시호스트이름이나 IP 주소를입력해서리모트호스트를지정해주어야한다. 연결의종류 소켓연결에는연결의초기화와어떤로컬소켓이연결되는지에따라기본적으로다음과같 은세가지로나누어볼수있다. 1. 클라이언트연결 (Client connections) 클라이언트연결은로컬시스템의클라이언트소켓을리모트시스템의서버소켓에연결하는것을말한다. 클라이언트연결은클라이언트소켓에의해개시되고초기화된다. 먼저클라이언트소켓이연결하고자하는서버소켓에대한정보를제공하면, 클라이언트소켓이서버소켓을찾게되고, 서버의위치를파악하게되면연결을요구한다. 서버소켓은클라이언트요구에대한큐 (queue) 를가지고있어서시간이될때마다연결을시도한다. 일단서버소켓이클라이언트연결을받아들이면클라이언트소켓에연결된서버소켓에대한모든정보를전송하게되며, 클라이언트에의해연결이완료된다 2. 리스닝연결 (Listening connections) 서버소켓이활동적으로클라이언트를찾아서연결을시도하지않고, 수동적으로클라이언트의요구를기다리는하프연결 (half connection) 상태를유지하는형태의연결이다. 서버소켓은큐를리스닝연결과연관지어서관리하며, 큐에는클라이언트의연결요구가계속기록된다. 일단서버소켓이클라이언트의연결요구를받아들이면클라이언트와연결하기위한새로운소켓을생성하게된다. 이렇게하면리스닝연결자체는다른클라이언트요구를받아들일수있도록계속열려있게할수있다. 3. 서버연결 (Server connections) 서버연결은서버소켓에의해서이루어지는것으로, 리스닝소켓이클라이언트요구를받아들이면생성된다. 일단서버가연결을받아들이면서버소켓의정보가클라이언트에게전송되어클라이언트소켓이이정보를받으면연결이완료되는형태이다.
4 일단연결이되면서버연결과클라이언트연결은차이가없는연결방식이다. 기본적으로클라이언트연결과서버연결은두개의종료점 (endpoint) 를가지며같은능력과같은종류의이벤트를사용한다. 그에비해리스닝연결은단지하나의종료점만을가지고있는본질적으로다른연결방식이다. 서비스프로토콜 네트워크서버와클라이언트를개발하기에앞서, 먼저어플리케이션이제공하거나사용하게될서비스에대한이해가반드시선행되어야한다. 많은서비스들은네트워크어플리케이션이반드시지원해야하는표준프로토콜을가지고있다. 만약 HTTP, FTP 등의표준서비스를지원하는네트워크어플리케이션을제작한다면, 다른시스템과통신하게되는프로토콜에대한이해가필요하다. 만약다른시스템과통신하는데있어서새로운형태의서비스를제공한다면, 제일먼저서비스를사용하게될서버와클라이언트사이의통신프로토콜을디자인해야한다. 이때에는어떤메시지가전달될것이며, 이런메시지들이어떻게조화를이루어야하며, 정보의암호화는어떤형식으로할것인지등을결정해야한다. 가끔네트워크서버와클라이언트어플리케이션에서네트워킹소프트웨어와서비스를사용하는어플리케이션사이에레이어 (layer) 를제공하는경우가있다. 예를들어, HTTP 서버는인터넷과웹서버어플리케이션사이에위치하여컨텐트를제공하고, HTTP 리퀘스트메시지에반응하게된다. 소켓은네트워크서버와클라이언트어플리케이션, 네트워킹소프트웨어사이에인터페이스를제공한다. 이때 ISAPI 등의흔히사용되는표준서버에대한 API 를복사해서사용할수도있고, 자신만의 API 를디자인해서사용할수도있다. 서비스와포트 대부분의서비스는특정포트번호와연관되어있다. 이럴때에는포트번호를서비스에대한번호코드 (numeric code) 로생각할수있다. 만약표준서비스를구현한다면델파이의윈도우소켓객체의메소드를이용하면그서비스에대한포트번호를알아낼수있다. 그에비해새로운서비스를제공하는경우라면윈도우 95 나 NT 의 Services 파일에포트번호를연관시켜지정할수있다. 소켓연결과데이터송수신 다른시스템과소켓연결을하는이유는연결을통해서정보를송수신할수있기때문이다. 이때어떤정보를주고받을지와언제어떤방식을사용할지등은소켓연결에사용된서
5 비스에좌우된다. 이렇게데이터를읽고쓰는데에는두가지방식이있다. 소켓에데이터를읽고쓸때비동기적인방식을사용해서네트워크어플리케이션에서다른코드의실행을방해하지않는것을논-블로킹연결 (Non-Blocking connections) 이라고하며, 데이터를읽고쓰는작업을쓰레드를이용하여독립적으로실행하는형태의연결을블로킹연결 (Blocking connections) 이라고한다. 블로킹연결 (Blocking connections) 클라이언트소켓에서는 ClientType 프로퍼티를 ctblocking 으로설정하면블로킹연결이생성된다. 클라이언트어플리케이션에따라서는읽고쓰는데에새로운쓰레드를생성하기를원할수도있는데, 이렇게하면어플리케이션은연결이완료되어데이터를읽고, 쓸때까지다른쓰레드를실행할수있다. 서버소켓에서는 ServerType 프로퍼티를 stthreadblocking 으로설정하면블로킹연결이생성된다. 블로킹연결은연결에의한데이터교환이될때까지실행이되지않으므로, 다른클라이언트연결에대해서항상새로운쓰레드가생성된다. 블로킹연결과쓰레드의이용 클라이언트소켓은블로킹연결이사용될때새로운쓰레드가자동으로생성되지않는다. 만약, 클라이언트어플리케이션이데이터를읽고, 쓰는것이외에다른작업이없다면이러한방식도큰상관이없겠지만, 연결이이루어지지않은경우에도사용자인터페이스에서다른작업을할수있게하려면새로운쓰레드를생성해야한다. 그에비해서버소켓은블로킹연결이생성될때마다각클라이언트연결에대해새로운쓰레드가생성된다. 그렇게때문에연결을통해클라이언트가데이터를읽고쓰는작업을할때다른클라이언트가이를기다리지않아도된다. 서버소켓은 TServerClientThread 객체를사용해서각연결에대한쓰레드를구현한다. 일단서버클라이언트쓰레드가실행되면, 연결되어있는클라이언트측에서연결을통해데이터를쓰고있는지검사하여그렇다면 OnClientRead 이벤트를발생시키며, 그렇지않으면 OnClientWrite 이벤트를발생시키고서버가데이터를쓰기시작한다. TWinSocketStream 클래스의활용 논 - 블로킹연결과블로킹서버연결모두연결에의해데이터를읽고, 쓸수있게되면특 정이벤트를받게된다. 이때이벤트핸들러에서는실제로데이터를읽고, 쓰는작업을윈 도우소켓객체의메소드를이용해서실행한다.
6 블로킹클라이언트연결에서는반드시자기자신이반대편의연결이데이터를읽고, 쓸준비가되었는지를파악해야한다. 이때 TWinSocketStream 객체를이용해서연결을통한데이터읽기, 쓰기를실행하면, 적절한시간간격등을조율할수있는메소드를제공받을수있다. 예를들어, WaitForData 메소드를호출하면서버소켓이준비될때까지기다리게할수있다. 클라이언트쓰레드의작성 클라이언트접속을위한쓰레드를작성할때에는 New Thread Object 대화상자를이용하여새로운쓰레드객체를정의할수있다. 새로운쓰레드객체의 Execute 메소드는실제쓰레드연결을통한데이터읽기와쓰레드를관리한다. 다음의코드가전형적인클라이언트쓰레드의예이다. procedure TMyClientThread.Execute; var TheStream: TWinSocketStream; buffer: string; TheStream := TWinSocketStream.Create(ClientSocket1.Socket, 60000); //TWinSocketStream 을생성한다. try while (not Terminated) and (ClientSocket1.Active) do try GetNextRequest(buffer); TheStream.Write(buffer, Length(buffer) + 1); // 버퍼의내용을서버에기록한다.... except if not(exceptobject is EAbort) then Synchronize(HandleThreadException); finally TheStream.Free;
7 쓰레드를이용하려면 OnConnect 이벤트핸들러를작성하면된다. 서버쓰레드의작성 서버접속에대한쓰레드는 TServerClientThread 에서상속받는다. 서버쓰레드를구현하기위해서는 Execute 메소드가아닌, ClientExecute 메소드를오버라이드해야한다. 클라이언트쓰레드와비슷하게구현하지만, 클라이언트소켓컴포넌트대신에 TServerClientWinSocket 객체를사용한다는점이가장큰차이점이다. 이객체는 ClientSocket 프로퍼티를통해접근이가능하다. 그리고, 예외처리는 HandleException 메소드를호출하면된다. procedure TMyServerThread.ClientExecute; var Stream: TWinSocketStream; Buffer: array[0.. 9] of Char; while (not Terminated) and ClientSocket.Connected do try Stream := TWinSocketStream.Create(ClientSocket, 60000); try FillChar(Buffer, 10, 0); // 버퍼를초기화한다. if Stream.WaitForData(60000) then if Stream.Read(Buffer, 10) = 0 then ClientSocket.Close; //1 분까지기다린다.... end else ClientSocket.Close; finally Stream.Free; except HandleException;
8 이쓰레드를사용하려면 OnGetThread 이벤트핸들러에서쓰레드를생성하면된다. 논 - 블로킹연결 (Non-Blocking connections) 클라이언트소켓에서 ClientType 프로퍼티를 ctnonblocking 으로설정하면논-블로킹연결이이루어진다. 이경우반대편의서버가데이터를읽거나쓰게되면클라이언트소켓이이를알수있으며, 이때 OnRead 또는 OnWrite 이벤트핸들러에의해서반응하게된다. 서버소켓에서는 ServerType 프로퍼티를 stnonblocking 으로설정하면논-블로킹연결이생성되는데, 논-블로킹클라이언트연결처럼클라이언트에서데이터를읽고쓰게되면 OnClientRead 또는 OnClientWrite 이벤트핸들러에의해서반응하게된다. 이러한이벤트에서소켓연결과관련한윈도우소켓객체가파라미터로전달되며, 이들객체를이용하면여러가지메소드를활용할수있다. 소켓연결에서데이터를읽을때에는 ReceiveBuf, ReceiveText 메소드를사용할수있다. ReceiveBuf 메소드는사용하기전에 ReceiveLength 메소드를사용해서반대편연결에서전송하려는데이터의바이트수를결정한후에사용한다. SendBuf, SendStream, SendText 메소드등을이용하면데이터를쓸수있다. 또한, 데이터를쓰고나서더이상소켓연결을유지할필요가없을때에는 SendStreamThenDrop 메소드를사용해서스트림에서읽은데이터를모두전송하고연결을닫도록할수있다. 참고로 SendStream, SendStreamThenDrop 메소드를사용하면소켓이연결이종료된후스트림을자동으로메모리에서해제하므로, 스트림객체를직접해제할필요가없다. 클라이언트소켓의이용 어플리케이션을 TCP/IP 클라이언트로사용할때에는클라이언트소켓컴포넌트 (TClientSocket) 를폼이나데이터모듈에추가한다. 클라이언트소켓에는연결하고자하는서버소켓과서버에서제공받을서비스를지정하게된다. 각각의클라이언트소켓컴포넌트는연결에서의클라이언트측종료점을나타내게되는클라이언트윈도우소켓객체 (TClientWinSocket) 을사용한다. 서버의지정 클라이언트소켓컴포넌트는서버시스템과연결하고자하는포트를지정할때사용할수
9 있는프로퍼티가있다. 서버시스템은 Host 프로퍼티에서호스트의이름을이용해서지정하거나, Address 프로퍼티에직접 IP 주소를적어넣을수있다. 만약둘다지정한경우에는호스트이름을사용한다. 포트역시 Port 와 Service 프로퍼티를이용해서지정할수있는데, Port 프로퍼티에는포트의번호를직접지정하는것이고 Service 프로퍼티에는포트번호와연관된표준서비스의이름을지정할경우간접적으로포트가지정되는것이다. 둘다지정된경우에는서비스이름을사용한다. 연결의생성 연결하고자하는서버에대한정보를클라이언트소켓컴포넌트에설정하고나면, 런타임에 서 Open 메소드를호출하여연결을시도하게된다. 디자인시에 Active 프로퍼티를 True 로설정하면어플리케이션이시작할때연결을시도한다. 연결에대한정보얻기 서버소켓과의연결이완료되면클라이언트윈도우소켓객체를사용해서연결에대한여러가지정보를얻어올수있게된다. 이때이객체를얻어오기위해 Socket 프로퍼티를사용한다. 윈도우소켓객체에는클라이언트와서버소켓이사용하는포트번호와주소를결정할때사용하는프로퍼티가있으며, SocketHandle 프로퍼티를이용해서윈도우소켓 API 를호출할때사용할소켓연결에대한핸들을얻을수도있다. 또한, Handle 프로퍼티를이용해서소켓연결에서의메시지를받는윈도우에접근할수있으며 ASyncStyles 프로퍼티를이용해서윈도우핸들이받게되는메시지의종류를결정할수도있다. 연결종료 서버어플리케이션과의소켓연결을통한통신이끝나면, Close 메소드를이용해서연결을 종료할수있다. 이때서버측에서연결을종료하면 OnDisconnect 이벤트가발생하므로, 적절한처리를해줄수있다. 서버소켓의이용 어플리케이션을 TCP/IP 서버로둔갑시키려면먼저서버소켓컴포넌트인 TServerSocket 을폼이나데이터모듈에올려놓는다. 서버소켓에서제공하려는서비스나클라이언트의요구를기다릴때사용할포트를지정할수있다. 각서버소켓컴포넌트는서버윈도우소켓객체 (TServerWinSocket) 를사용하여리스닝연결에서의서버측종료점을이루게한
10 다. 또한, 서버가받아들인클라이언트소켓과의연결에서의서버종료점에대한클라이언 트윈도우소켓객체 (TServerClientWinSocket) 도활용한다. 포트의지정 서버소켓이클라이언트의요구를기다리기전에 ( 이런기다림을 listening 이라고한다.) 서버가사용할포트를지정해주어야한다. 이때 Port 프로퍼티를사용해서포트를지정할수있다. 서버어플리케이션이특정포트번호와연관된표준서비스를제공하는경우라면 Service 프로퍼티를지정함으로써간접적으로포트를지정할수도있다. 만약에 Port 와 Service 프로퍼티를모두지정한경우라면서버소켓은서비스이름을사용하게된다. 클라이언트요구대기 (Listening for client request) 일단서버소켓컴포넌트의포트번호를설정하면, 런타임에서 Open 메소드를사용하여리스닝연결 (listening connection) 을생성할수있게된다. 만약에어플리케이션이시작할때리스닝연결을자동으로시작하게하고싶으면, 디자인시에 Active 프로퍼티를 True 로설정하면된다. 클라이언트에대한연결생성 리스닝서버소켓컴포넌트는클라이언트연결요구를받는족족이를허용한다. 이렇게 되면 OnClientConnect 이벤트가발생하며, 적절한처리를이벤트핸들러에서해주면된다. 연결에대한정보얻기 일단서버소켓에서리스닝연결을시작하면, 서버윈도우소켓객체를사용해서연결에대한정보를얻을수있게된다. 서버윈도우소켓객체는 Socket 프로퍼티를이용해서접근이가능하다. 이윈도우소켓객체를이용하면서버소켓컴포넌트가받아들인클라이언트소켓객체들과의모든활성화된연결을찾아낼수있으며, SocketHandle 프로퍼티를이용해서소켓연결에대한핸들을얻을수도있다. 이핸들을사용해서윈도우소켓 API 를직접호출할수도있다. 또한, Handle 프로퍼티를이용하면소켓연결에서날아온메시지를받은윈도우에접근할수있다. 각각의클라이언트어플리케이션에대한활성화된연결은서버클라이언트윈도우소켓객체 (TServerClientWinSocket) 에캡슐화되어있다. 이들모두에게접근할때에는서버윈도우소켓객체의 Connections 프로퍼티를이용하면된다. 서버클라이언트윈도우소켓객체에는연결의양쪽종료점을형성하는클라이언트와소켓객체에서사용하는포트번호
11 와주소를결정할수있는프로퍼티가있으며, SocketHandle 이라는프로퍼티를사용하면윈도우소켓 API 호출을할때사용할수있는소켓연결에대한핸들을얻을수도있다. 또한, Handle 프로퍼티를사용하면소켓연결에서의메시지를받은윈도우에접근할수있으며, ASyncStyles 프로퍼티에서메시지의종류를결정할수도있다. 연결의종료 리스닝연결을종료할때에는 Close 메소드를사용한다. 이메소드를통해클라이언트어플리케이션과의모든연결을단절시킬수있으며, 리스닝연결이종료되므로서버소켓은더이상새로운연결을허용하지않게된다. 클라이언트가서버소켓과의연결을종료하면 OnClientDisconnect 이벤트가발생하며, 적절한이벤트핸들러를이용해서정리를해준다. 소켓이벤트 앞에서몇가지이벤트에대하여이미언급한바가있다. 이를간단히먼저정리하면논- 블로킹연결이나블로킹연결에서소켓연결에대해언제데이터를읽고, 쓸것인지에대한이벤트가있으며, 서버측에서연결을종료할때클라이언트소켓에서받게되는 OnDisconnect 이벤트, 그리고클라이언트에서연결을종료할때서버소켓에서받게되는 OnClientDisconnect 이벤트가있다. 또한, 클라이언트와서버소켓모두연결에서에러메시지를받게되면 OnError 이벤트가발생한다. 그밖에연결을열고, 완료할때까지여러가지이벤트가발생하게된다. 클라이언트이벤트 클라이언트소켓이연결을열게되면, 다음과같은이벤트들이순차적으로발생한다. 1. 서버소켓을찾기전에 OnLookup 이벤트가발생한다. 이시점에서는찾는서버소켓을바꾸기위해 Host, Address, Port, Service 프로퍼티를변경할수없다. Socket 프로퍼티를이용해서클라이언트윈도우소켓객체에접근할수있으며, 그객체의 SocketHandle 프로퍼티를이용해서윈도우 API 를호출할수있다. 2. 윈도우소켓이설정되고, 초기화된다. 3. 일단서버소켓을찾으면 OnConnecting 이벤트가발생한다. 이시점에서는윈도우소 4. 켓객체를사용해서서버소켓에대한정보를얻을수있게되며, 연결에사용되는실제포트와 IP 주소를알수있다. 5. 연결요구가서버에의해받아들여지면클라이언트소켓에서연결이완료된다.
12 6. 연결이완료되면 OnConnect 이벤트가발생한다. 연결이완료되는즉시데이터를읽고, 쓰는작업을해야할때에는 OnConnect 이벤트핸들러에적절한코드를작성하면된 다. 서버이벤트 서버소켓컴포넌트는리스닝연결과클라이언트연결의두가지형태의연결을형성할수 있다. 이들각각에따라발생하는이벤트가다르기때문에, 따로나누어설명하겠다. - 리스닝연결이벤트 리스닝연결이생성되기직전에 OnListen 이벤트가먼저발생한다. 이시점에서 Socket 프로퍼티를이용해서서버윈도우소켓객체에접근할수있게된다. 이객체의 SocketHandle 프로퍼티를이용해서연결이생성되기전에소켓에대한여러가지사항을바꾸어볼수가있다. 예를들어, 서버가리스닝에사용하는 IP 주소를제한하는등의처리를할수가있다. - 클라이언트연결이벤트 1. 연결의서버측종료점을형성하는소켓에대한윈도우소켓핸들을넘겨주는 OnGetSocket 이벤트가클라이언트측에소켓객체를넘겨줄때발생한다. 이때개 발자가 TServerClientWinSocket 클래스대신에자신만의윈도우소켓객체를대신 사용하도록할수있다. 즉, OnGetSocket 이벤트핸들러에서자신의윈도우소켓객 체를생성할수있다. 2. 이어서 OnAccept 이벤트가발생하는데, 여기에는새로운 TServerClientWinSocket 객체를이벤트핸들러에넘겨준다. 여기에서처음으로 TServerClientWinSocket 객 체를이용해서클라이언트에연결된서버측종료점에대한정보를이용할수있게된 다. 3. ServerType 이 stthreadblocking 이면 OnGetThread 이벤트가발생한다. 여기에서 자신만의 TServerClientThread 객체를생성할수있으며, 이를대신사용하게된다. 이어서쓰레드가실행되기시작하면 OnThreadStart 이벤트가발생한다. 쓰레드의 초기화나쓰레드가연결을통해데이터를읽고, 쓰는작업을하려고윈도우소켓 API 를호출해야한다면, 이이벤트핸들러에서작업을한다. 4. 클라이언트가연결을완료하면 OnClientConnect 이벤트가발생한다. 논-블로킹서 버의경우에는이시점에서데이터를읽고, 쓰기를시작하면된다.
13 1:1 채팅예제의제작 그러면, 실제로예제를만들어나가면서지금까지설명한것들을익혀보도록하자. 이번에만들예제는 1:1 채팅을가능하게하는프로그램으로하나의어플리케이션에 TClientSocket 과 TServerSocket 을모두올려놓고, 이프로그램이경우에따라서채팅서버가되기도하고, 클라이언트가되기도하는프로그램이다. 본래채팅프로그램을제대로만들려면서버프로그램에여러개의클라이언트가접속하는형태로제작해야하지만, 이예제는네트워크프로그래밍의기본을이해시키려는목적으로제작하는것이므로 1:1 채팅만을지원하도록하였다. 이런식으로클라이언트와서버의기능을모두갖춘프로그램은프로그램을테스트하기에편리하고실제메시지를처리하면서클라이언트와서버에서메시지를처리하는방법을동시에익힐수있는장점이있다. 먼저폼에메모컴포넌트를 2 개와 TPanel, TStatusBar 컴포넌트를하나씩얹는다. 패널위에는버튼컴포넌트 3 개와 IP 주소를입력할에디트박스를하나추가하여다음과같이디자인한다. 물론 1:1 채팅프로그램을만들기위해서 TClientSocket 과 TServerSocket 컴포넌트도추가해야할것이다. 그리고포트를결정해야하는데, 필자는 1001 번으로결정하였다. ClientSocket1 과 ServerSocket1 컴포넌트의 Port 프로퍼티를 1001 로설정하였다. 그리고, StatusBar1 컴포넌트를선택하고오른쪽버튼을클릭한후 Panels Editor 메뉴를선택하여패널에디터를띄운뒤에 Add New(Ins) 버튼을클릭하여 StatusPanel 을하나추가한다. 이제이 1:1 채팅어플리케이션은클라이언트이면서동시에서버로동작할수있도록준비가끝난셈이다. 이를위해서전역변수를 2 개추가해야하는데, 하나는채팅어플리케이
14 션이클라이언트가접속하기를기다리는지여부를결정하는 Listening 변수와현재서버로 동작하고있는지를나타낼 IsServer 변수가그것이다. var Form1: TForm1; Listening: Boolean; IsServer: Boolean; 폼의 OnCreate, OnClose 이벤트핸들러를다음과같이작성하여처음폼이생성될때에는 Listening 변수를초기화하고, 폼을닫을때에는소켓을닫도록한다. procedure TForm1.FormCreate(Sender: TObject); Listening := False; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); ServerSocket1.Close; ClientSocket1.Close; Listen 버튼의 OnClick 이벤트에서는현재의폼을서버로대기하도록하는기능을한다. 버튼의 OnClick 이벤트핸들러를다음과같이작성한다. procedure TForm1.Button1Click(Sender: TObject); Listening := not Listening; if Listening then ClientSocket1.Active := False; ServerSocket1.Active := True; Statusbar1.Panels[0].Text := 'Listening...'; end else
15 if ServerSocket1.Active then ServerSocket1.Active := False; Statusbar1.Panels[0].Text := ''; 이버튼을클릭하면현재의 Listening 변수의값을변경한다. 그리고, 이변수의값이 True 이면 ServerSocket1 의 Active 프로퍼티를 True 로설정하고 StatusPanel 의 Text 프로퍼티를 Listening 으로설정한다. 이값이 False 이면서버소켓의 Active 프로퍼티를 False 로설정한다. Connect 버튼을클릭하면 Edit1 의내용을 ClientSocket1 컴포넌트의 Address 프로퍼티로설정한다. 참고로앞에서도설명했듯이소켓의 Address 와 Host 프로퍼티중에서하나를이용하는데, Address 프로퍼티는 IP 주소를이용한다. 그리고, 이주소를이용하여서버소켓에접속한다. 그리고, Disconnect 버튼을클릭하면클라이언트소켓을닫고, Listen 버튼의 OnClick 이벤트핸들러를호출한다. procedure TForm1.Button2Click(Sender: TObject); if ClientSocket1.Active then ClientSocket1.Active := False; if Length(Edit1.Text) > 0 then ClientSocket1.Address := Edit1.Text; ClientSocket1.Active := True; procedure TForm1.Button3Click(Sender: TObject); ClientSocket1.Close; Button1Click(nil); 이제각버튼의 OnClick 이벤트핸들러는모두작성하였다. 이제부터서버소켓과클라이언트소켓의이벤트핸들러를하나씩작성하면서이들의역할을알아보도록하자. 먼저서버소켓의이벤트핸들러를작성하도록하자. 앞에서도설명했듯이서버소켓에클
16 라이언트소켓이접속을시도하면 OnGetSocket 이벤트에이어서 OnAccept 이벤트가발생한다. 이이벤트에서는서버가클라이언트의접속을받아들이기로할때발생하는이벤트이므로 IsServer 변수를 True 로설정하여이제어플리케이션이서버로동작하고있음을나타내게하고, StatusPanel 에연결된클라이언트의 IP 주소를나타내도록한다. OnAccept 이벤트의 Socket 파라미터는클라이언트소켓을나타낸다. procedure TForm1.ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); IsServer := True; Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress; 이어서클라이언트가연결을완료하면 OnClientConnect 이벤트가발생한다. 지금작성하고있는채팅어플리케이션과같은논-블로킹서버의경우에는이시점에서데이터를읽고, 쓰기를시작할수있다. Memo2 컴포넌트에는클라이언트소켓에서발생한메시지를표시할것이므로, 이시점에서부터내용을보여주도록메모컴포넌트의내용을지우도록한다. 그리고, OnRead 이벤트는서버소켓이클라이언트소켓으로부터데이터를전달받을때발생하는데 Socket 파라미터의 ReceiveText 프로퍼티에클라이언트소켓에서전송한텍스트값이들어가있다. 그러므로이를 Memo2 컴포넌트에보여주도록이벤트핸들러를작성한다. procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); Memo2.Lines.Clear; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); Memo2.Lines.Add(Socket.ReceiveText); 마지막으로연결이종료될때에발생하는 OnClientDisconnect 이벤트핸들러에서는서버 소켓의 Active 프로퍼티를 False 로설정하고, 처음의 Listening 상태로들어가기위해서
17 Button1Click 이벤트핸들러를다시호출한다. 이때이를호출하면 Listening 변수의값이 변경되므로먼저 Listening 변수값을변경한뒤에호출해야원래의값이보존될것이다. procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); ServerSocket1.Active := False; Listening := not Listening; Button1Click(nil); 이번에는클라이언트소켓의이벤트핸들러를작성할차례이다. 클라이언트소켓도서버소켓과접속이되었을때 OnConnect 이벤트가발생한다. 여기에서도마찬가지로접속된서버소켓이위치한컴퓨터의이름을나타내도록하는데, Socket 파라미터의 RemoteHost 프로퍼티를사용하면마이크로소프트의 UNC 이름에해당되는컴퓨터이름이나타난다. procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost; 이어서나타날수있는 OnRead 이벤트핸들러에서는서버소켓을 Socket 파라미터에서얻 을수있다. 서버의텍스트내용을클라이언트로동작하고있는어플리케이션의메모컴포 넌트에보여주도록다음과같이이벤트핸들러를작성한다. procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); Memo2.Lines.Add(Socket.ReceiveText); 클라이언트소켓의 OnDisconnect 이벤트핸들러에서는 Button1Click 이벤트핸들러를호 출하여서버소켓으로동작할수있도록한다. procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
18 Socket: TCustomWinSocket); Button1Click(nil); 그리고, 이런접속과정에서에러가발생할경우에는 OnError 이벤트가발생하는데, 이벤트 핸들러를다음과같이작성하여발생된에러상황을나타내도록한다. procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); Memo2.Lines.Add('Error connecting to : ' + Edit1.Text); ErrorCode := 0; 마지막으로 Memo1 컴포넌트의 OnKeyDown 이벤트핸들러에서눌려진키가리턴키일경우에소켓으로전송하도록한다. 이때 IsServer 변수를검사하여서버일경우와클라이언트일경우에서로다른소켓에다가 SendText 메소드를이용하여텍스트를전송한다. procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); if Key = VK_Return then if IsServer then ServerSocket1.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count - 1]) else ClientSocket1.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]); 여기서클라이언트소켓의경우에는간단하지만, 서버소켓의경우여러개의클라이언트소켓과물릴수있기때문에 Connections 라는컬렉션객체가포함되어있다. 그렇지만, 우리가작성한어플리케이션은단지 1:1 통신만지원하므로 Connections[0] 으로접속된클라이언트소켓을지칭할수있다. 이것으로간단한 1:1 통신을지원하는채팅어플리케이션이완성되었다. 컴파일하고실행한뒤에서버와클라이언트컴퓨터에각각띄우도록한다.
19 그리고, 서버측에서는 Listen 버튼을클릭하여클라이언트프로그램의접속을대기하도록하고, 클라이언트측에서는에디트박스에 IP 주소를적어넣은뒤에 Connect 버튼을클릭하여서버에접속하도록하자. 성공적으로접속이되면, 상태바에연결된컴퓨터의 IP 주소 ( 서버컴퓨터의경우 ) 또는연결된컴퓨터의컴퓨터이름 ( 클라이언트컴퓨터의경우 ) 이나타날것이다. 이제메모컴포넌트에서통신을시도하면다음과같이채팅을할수있을것이다. 블로킹연결을이용한파일전송예제 소켓을이용한프로그래밍을할때앞서설명한채팅어플리케이션과같이연결을유지하면서통신을할필요가있을때에는중단되지않는논-블로킹연결을지원하도록해야하지만, 경우에따라서는전송하는측과전송받는측의데이터전송에있어서서로비동기적으로처리하는것이효율적일때가많다. 이럴때에는블로킹연결을이용하게되는데, 블로킹연결을이용하여소켓프로그래밍을하는것은해당되는연결의쓰레드를생성하여이를실행하도록하는형태로제작해야하기때문에논-블로킹연결을지원하는어플리케이션에비해다소까다로운점이많다. 그러면, 블로킹연결을통해클라이언트에서서버로지정된파일을전송하는예제를작성해보도록하자. 이예제는 Stig Johansen 이공개한예제를바탕으로작성하였다. 예제프로그램의구조는클라이언트어플리케이션에서파일열기대화상자에서지정한파일을에디트박스에지정한 IP 주소로전송한다. 그리고, 서버어플리케이션에서는클라이언트와연결되면서버에저장할파일이름을지정하면, 여기에파일을저장하도록한다. 먼저, 서버어플리케이션을작성하도록하자. 폼위에다음과같이메모컴포넌트와서버소켓, 파일저장대화상자컴포넌트를하나씩추가하고, 메모컴포넌트의 Align 프로퍼티는
20 alclient, ScrollBars 프로퍼티는 ssvertical, ReadOnly 프로퍼티는 True 로설정한다. 그 리고 ServerSocket1 컴포넌트의 ServerType 프로퍼티는 stthreadblocking, Port 프로퍼 티는 2001 로설정하도록하자. 블로킹연결을지원하는서버를작성하기위해서는 TServerClientThread 에서상속받은쓰레드클래스를이용하는것이핵심이다. 여기서는파일과소켓의스트림을내부적으로사용하여파일의전송을구현하기때문에, private 섹션에소켓스트림과파일스트림필드를추가하고외부에서접근할수있도록 public 섹션에프로퍼티로선언하도록한다. TServerThread = class(tserverclientthread) private FSocketStream: TWinSocketStream ; FFileStream: TFileStream; protected procedure ClientExecute; override; public property SocketStream: TWinSocketStream read FSocketStream write FSocketStream ; property FileStream: TFileStream read FFileStream write FFileStream ; 쓰레드클래스에서꼭오버라이드해서구현해야하는메소드가 ClientExecute 로, 다중쓰레드를지원하는경우에 Execute 메소드를오버라이드하는것과같은역할을한다. 다중쓰레드프로그래밍에대해서는 41 장에서자세히다루므로이를참고하기바란다. 폼의 OnCreate 이벤트핸들러에서서버소켓의 Active 프로퍼티를 True 로설정하여서버소켓이클라이언트소켓과의연결을받아들일수있도록이를열어놓도록한다.
21 procedure TForm1.FormCreate(Sender: TObject); ServerSocket1.Active := True; 그리고서버소켓의 OnAccept, OnListen, OnThreadStart, OnThreadStop 이벤트핸들러를 다음과같이작성하여클라이언트소켓과의연결상황을메모컴포넌트에나타내도록한다. procedure TForm1.ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); Memo1.Lines.Add('Accept ' + Socket.RemoteAddress); procedure TForm1.ServerSocket1Listen(Sender: TObject; Socket: TCustomWinSocket); Memo1.Lines.Add('Listening... '); procedure TForm1.ServerSocket1ThreadStart(Sender: TObject; Thread: TServerClientThread); Memo1.Lines.Add('Start Thread of ' + Thread.ClientSocket.LocalAddress); procedure TForm1.ServerSocket1ThreadEnd(Sender: TObject; Thread: TServerClientThread); Memo1.Lines.Add('End Thread'); 블로킹연결에있어서가장중요한것은 OnGetThread 이벤트핸들러에서서버쓰레드를생성하는작업이다. 서버쓰레드를생성할때두번째파라미터를 False 로선언하면생성과동시에실행되는것이지만, 다음과같이 True 로설정하면쓰레드객체의프로퍼티를변경한뒤에 Resume 메소드로쓰레드가실행된다.
22 procedure TForm1.ServerSocket1GetThread(Sender: TObject; ClientSocket: TServerClientWinSocket; var SocketThread: TServerClientThread); var SocketStream: TWinSocketStream ; FileStream: TFileStream ; FileName: string; FileName := 'Default.file'; SocketStream := TWinSocketStream.Create(ClientSocket, 20); if SaveDialog1.Execute then FileName := SaveDialog1.FileName; FileStream := TFileStream.Create(FileName, fmcreate or fmshareexclusive); SocketThread := TServerThread.Create(True, ClientSocket); (SocketThread as TServerThread).SocketStream := SocketStream; (SocketThread as TServerThread).FileStream := FileStream; SocketThread.FreeOnTerminate := True ; SocketThread.Resume ; 여기에서전송되어온파일의이름을대화상자에서선택할수있도록하고, 파일스트림객체를생성하여쓰레드객체의프로퍼티에대입하고, 마찬가지로 TWinSocketStream 객체를생성하여이를소켓스트림프로퍼티에대입한다. 이제쓰레드가실제로실행되는 ClientExecute 메소드를구현하면서버프로그램이완성된다. 이를구현하기에앞서소켓스트림의전체내용을읽어오는역할을하는 ReadStream 함수를다음과같이구현한다. function ReadStream (Stream: TWinSocketStream; Buffer: Pointer; Count: Integer): Boolean; var P: PChar; Total, Delta, TimeOut: Integer; if Count = 0 then Result := True;
23 Exit; TimeOut := 0; Result := True; Total := 0; P := Buffer; while Total < Count do try Delta := Stream.Read(P^, Count - Total); except Exit; if Delta = 0 then Inc(Timeout); while not Stream.WaitForData(1000) and (TimeOut < 20) do Inc(TimeOut); if Timeout >= 20 then Result := False; Exit; end else TimeOut := 0; Inc(P, Delta); Inc(Total, Delta); 이루틴은꽤유용하게사용되므로잘익혀두기바란다. 구현된내용을간단히설명하면소켓스트림에서데이터를읽어올때버퍼와시간제한을이용하여적절한버퍼링을해주는것이주된내용이다. 이런작업이필요한이유는이런버퍼링작업이없이송신측에서는무조건데이터를밀어넣고, 수신측에서는무조건데이터를가져올경우에는간혹손실되는패킷이생기기때문이다. 실제로뉴스그룹에서도이런문제로어려움을겪는많은개발자들이있었는데, 이런문제를이루틴으로해결할수있다.
24 소스를보면쉽게이해할수있을것이나간단한설명을덧붙이자면, 스트림의 Read 메소드에의해실제읽어온데이터의바이트수를 Delta 라는변수에대입하게되는데이때이값이 0 이면 WaitForData 메소드를이용하여버퍼에데이터가들어오는지기다려보고, 이를여기서는최대 20 번까지기다려본후에그래도데이터가전송되어오지않으면연결이끊어진것으로간주하고실행을중지하게된다. 이루틴을이용하여 TServerThread 객체의 ClientExecute 메소드는다음과같이구현한다. procedure TServerThread.ClientExecute; var FileLength: Integer; MemoryStream: TMemoryStream; if ReadStream(SocketStream, Addr(FileLength), SizeOf(FileLength)) then MemoryStream := TMemoryStream.Create; MemoryStream.SetSize(FileLength); ReadStream(SocketStream, MemoryStream.Memory, FileLength); FFileStream.CopyFrom(MemoryStream, MemoryStream.Size); MemoryStream.Free; if Assigned(FSocketStream) then FSocketStream.Free; if Assigned(FFileStream) then FFileStream.Free; Terminate; 여기서눈여겨보아야할것은파일스트림과소켓스트림의원활한전달을위해중간에 TMemoryStream 형의변수를이용한다는점이다. 그리고, 처음에일단 ReadStream 메소드를이용하여전달된파일의크기를먼저받아본다는점이중요하다. 이는클라이언트에서파일을전송할때먼저파일의크기를전송하고나서, 실제파일을전송한다는것을의미한다. 그리고, 이값을이용하여서버에서파일을생성하고스트림을복사한다. 이것으로서버프로그램이완성되었다. 이번에는이서버프로그램과연결해서사용할클라이언트프로그램을작성해보자. 서버와는달리클라이언트프로그램에는연결한서버의 IP 주소를적어넣을에디트박스와버튼을하나의패널에올려놓고, 메모컴포넌트를다음과같이추가하여디자인하도록하자.
25 클라이언트소켓의 ClientType 프로퍼티는 ctblocking 으로설정하고, Port 프로퍼티는서버와같은 2001 로설정한다. 그리고먼저클라이언트소켓의 OnConnect, OnDisconnect, OnError 이벤트핸들러를다음과같이작성하여통신상황을나타내도록한다. procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); Memo1.Lines.Add('Connected to ' + Socket.RemoteAddress); procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); Memo1.Lines.Add('Disconnected to ' + Socket.RemoteAddress); procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); Memo1.Lines.Add('Error Code is ' + IntToStr(ErrorCode)); 그리고, 서버프로그램에서의 ReadStream 과마찬가지로클라이언트에서파일의내용을파
26 일스트림에읽어들인후, 이를소켓스트림에기록하는역할을하는 WriteStream 함수를 다음과같이구현한다. procedure WriteStream(Stream: TWinSocketStream; const Buffer: Pointer; Count: Integer); var P: PChar; Total, Delta, TimeOut: Integer; if Count = 0 then Exit; Total := 0; TimeOut := 0; Delta := 0; P := Buffer; while Total < Count do try Delta := Count - Total; if Delta > then Delta := 16384; // 최대값 Delta := Stream.Write(P^, Delta); except Exit; Inc(P, Delta); Inc(Total, Delta); 비교적간단한구현내용이므로쉽게이해할수있을것이다. 참고로여기서는한번에최대 바이트를하나의패킷으로스트림에기록하도록하였다. 소켓연결상태등에따라크기를변경할수도있겠다. 마지막으로 Button1 의 OnClick 이벤트핸들러를다음과같이작성한다. procedure TForm1.Button1Click(Sender: TObject); var FileStream: TFileStream;
27 FileLength: Integer; if OpenDialog1.Execute then FileStream := TFileStream.Create(OpenDialog1.FileName, fmopenread or fmsharedenynone); FileLength := FileStream.Size; if FileLength > 0 then ClientSocket1.Address := Edit1.Text; ClientSocket1.Active := True; if ClientSocket1.Active then ClientSocket1.Socket.SendBuf(FileLength, SizeOf(FileLength)); ClientSocket1.Socket.SendStream(FileStream); ClientSocket1.Active := False; 일단파일열기대화상자를이용하여전송할파일을선택하게하고, 이파일에대한파일스트림객체를생성한다. 그리고, 파일스트림의크기를먼저 SendBuf 메소드를이용하여전송하고, 파일스트림의내용을 SendStream 메소드를이용하여전송한다. 이와같이소켓을이용하여스트림을전송할때에는패킷을나누어전송하고, 스트림의크기를먼저전송하게하는것이에러를줄일수있는요령이다. 물론, 독자적인프로토콜을정의하여이를이용하는것이가장이상적일것이다. 이것으로클라이언트어플리케이션이완성되었다. 이제클라이언트와서버어플리케이션을띄우고파일을선택하여전송하도록해보자. 다음그림은서버와클라이언트어플리케이션의실행화면이다.
28 정리 (Summary) 이번장에서는델파이에서기본적으로제공되는소켓컴포넌트를이용하여프로그래밍을하는방법에대해서알아보았다. 소켓컴포넌트는과거뉴스그룹에서델파이판매전략에서 C/S 버전에만포함된것이격렬한논란거리가된컴포넌트이다. 그렇기때문에, 윈속을지원하는수많은프리웨어컴포넌트들이나오게되었고, 델파이 4 에서는프로페셔널버전에소켓컴포넌트만추가한새로운제품군을등장시켰다. 그만큼사용빈도도높고, 또한쓸모도많다. 그러므로, 여기에서소개한소켓컴포넌트뿐만아니라, Francois Piette 가공개한프리웨어컴포넌트들도매우뛰어나고더잘된것들도많으므로이런프리웨어에도관심을두고찾아보기바란다.
Microsoft 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 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 information<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >
웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
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 information제1장 Unix란 무엇인가?
1 소켓 2 1 소켓 클라이언트 - 서버모델 네트워크응용프로그램 클리이언트 - 서버모델을기반으로동작한다. 클라이언트 - 서버모델 하나의서버프로세스와여러개의클라이언트로구성된다. 서버는어떤자원을관리하고클라이언트를위해자원관련서비스를제공한다. 3 소켓의종류 소켓 네트워크에대한사용자수준의인터페이스를제공 소켓은양방향통신방법으로클라이언트 - 서버모델을기반으로프로세스사이의통신에매우적합하다.
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 information<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A
학습목표 자바의소켓포트의개념을이해한다 네트워크프로그래밍 클라이언트통신프로그램의구조를이해한다 소켓과클라이언트소켓을구분하여이해한다 11 주소켓 - 애코김문정 tops@u1.ac.kr 2 포트 (port) 데이터송수신창구 0~65536 (0~1024 : well-known port) ServerSocket 클래스 ( 소켓 ) ServerSocket 클래스에사용되는클래스
More informationThe Pocket Guide to TCP/IP Sockets: C Version
인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)
More informationPowerPoint 프레젠테이션
명품 Java Essential 1 2 학습목표 1. 소켓통신에대한이해 2. 자바로간단한소켓통신프로그램작성 TCP/IP 소개 3 TCP/IP 프로토콜 두시스템간에데이터가손상없이안전하게전송되도록하는통신프로토콜 TCP 에서동작하는응용프로그램사례 e-mail, FTP, 웹 (HTTP) 등 TCP/IP 특징 연결형통신 한번연결후계속데이터전송가능 보낸순서대로받아응용프로그램에게전달
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 informationq 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2
객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가
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 information2009년 상반기 사업계획
소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버
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 information<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 25 장네트워크프로그래밍 이번장에서학습할내용 네트워크프로그래밍의개요 URL 클래스 TCP를이용한통신 TCP를이용한서버제작 TCP를이용한클라이언트제작 UDP 를이용한통신 자바를이용하여서 TCP/IP 통신을이용하는응응프로그램을작성하여봅시다. 서버와클라이언트 서버 (Server): 사용자들에게서비스를제공하는컴퓨터 클라이언트 (Client):
More information네트워크 어플리케이션의 제작
네트워크어플리케이션의제작 (Creating Network Application) 37 장에서는소켓을이용한어플리케이션제작방법에대해서알아보았다. 이번장에서는 델파이 4 에서제공되는 NetMaster 의컴포넌트들을소개하고, 이를이용하여작성할수 있는네트워크어플리케이션을소개한다. NetMaster 컴포넌트 델파이의인터넷컴포넌트는 2.01 버전의 NetManage 컴포넌트에서시작되었다.
More informationPowerPoint 프레젠테이션
Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용
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게시판 스팸 실시간 차단 시스템
오픈 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 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 informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationMicrosoft PowerPoint PythonGUI-socket
: 채팅프로그래밍 순천향대학교컴퓨터공학과 이상정 순천향대학교컴퓨터공학과 1 학습내용 인터넷구조 인터넷구성요소 인터넷주소 클라이언트 / 서버구조 소켓프로그래밍소개 파이썬소켓프로그래밍 TCP 클라이언트 / 서버프로그래밍 스레드소개 파이썬스레드 채팅클라이언트 / 서버프로그램 순천향대학교컴퓨터공학과 2 네트워크요소 네트워크가장자리 (edge) 호스트 : 클라이언트와서버
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 informationAPI - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어
메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
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 information학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2
학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등
More information<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>
i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,
More information. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요
. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,
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 informationNetwork Programming
Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More information오버라이딩 (Overriding)
WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener
More information歯MDI.PDF
E08 MDI SDI(Single Document Interface) MDI(Multiple Document Interface) MDI (Client Window) (Child) MDI 1 MDI MDI MDI - File New Other Projects MDI Application - MDI - OK [ 1] MDI MDI MDI MDI Child MDI
More informationvar answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");
자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트
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 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 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 information메신저만들기 1 - 친구추가등친구관리기능은모두시스템패킷으로처리한다. 시스템패킷을최소한으로하기위해친구관리기능을따로만들지않으며, 현재로그인된모든사용자를친구로인식하게한다. - 소켓과크게관계없는기능들은모두생략한다. - 다음호에서이모티콘과추가적인기능을구현한다. 패킷구조소켓프로그
실전강의실 4 델파이로풀어보는애플리케이션개발테크닉메신저만들기 1 메신저는인터넷환경에서가장많이쓰이는프로그램중하나이다. 초기메신저는텍스트위주의기능으로가볍고구조도간단했다. 그러나하나둘씩부가기능이추가되고소켓을이용해구현하다보니구조가상당히복잡해졌다. 객체지향프로그래밍 (OOP) 기반의간단한메신저를만들어봄으로써소켓프로그래밍의구조를이해하고, 리치에디트와 ActiveX를이용한다양한메시지표현방법을배워보자.
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서비스) 와서버( 관리대상서버) 간에자격증명을사용하여서로의 ID 를확인하고서로주고받는데이터를검사하고암호화하는프로세스 이다. 높은인증수준은일반적으로성능의저하를가져올수있지만높은 수준의보안과데이터무결성을제공한다. 기본값 - 관리대상서버에설정되어있는 DCOM 인증수준기본 값을
설정매뉴얼 연결설정 연결을하기위해서는클라이언트와서버에 Windows Management Instrumentation, Remote Procedure Call(RPC) 서비스 가설치및실행되고있어야한다. Windows Management Instrumentation 서비스는 굳이실행시킬필요는없다. 요청이들어올경우자동실행되므로 연결및쿼리는 DCOM 을사용한다. DCOM은
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 information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More information[Brochure] KOR_TunA
LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More informationChapter #01 Subject
Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned
More informationSOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax
SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : ActiveX
More information목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate
ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More information이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론
이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN
More informationMicrosoft PowerPoint - Chapter 6.ppt
6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; // 컴파일오류 3 C 의 const (1)
More information[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme
8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean
More information쉽게 풀어쓴 C 프로그래밍
CHAPTER 14. HTML5 웹스토리지, 파일 API, 웹소켓 웹스토리지 웹스토리지 (web storage) 는클라이언트컴퓨터에데이터를저장하는메카니즘 웹스토리지는쿠키보다안전하고속도도빠르다. 약 5MB 정도까지저장이가능하다. 데이터는키 / 값 (key/value) 의쌍으로저장 localstorage 와 sessionstorage localstorage 객체
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
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 information쉽게 풀어쓴 C 프로그래밍
제 13 장파일처리 1. 스트림의개념을이해한다. 2. 객체지향적인방법을사용하여파일입출력을할수있다. 3. 텍스트파일과이진파일의차이점을이해한다. 4. 순차파일과임의접근파일의차이점을이해한다. 이번장에서만들어볼프로그램 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 입출력관련클래스들 파일쓰기
More information< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10
(https://www.kisarbl.or.kr) < 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 Ⅰ. 개요 실시간스팸차단리스트 (RBL) 는메일서버를운영하는누구나손쉽게효과적으로스팸수신을차단하는데이용할수있도록한국인터넷진흥원 (KISA)
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft PowerPoint - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More information운영체제실습_명령어
운영체제실습 리눅스네트워크기본개념및설정 서 기옥 Contents 네트워크용어정의 IP 주소 네트워크기본명령어 네트워크관리명령어 네트워크설정파일 telnet 서버설정 네트워크용어정의 네트워크 (Network) : 전자적으로데이터를주고받기위한목적으로연결된 2 개이상의컴퓨터시스템 IP 주소와 Ethernet 주소 IP 주소 : 네트워크에연결된시스템을구분하는소프트웨어적인주소
More information로거 자료실
redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More informationvRealize Automation용 VMware Remote Console - VMware
vrealize Automation 용 VMware Remote Console VMware Remote Console 9.0 이문서는새버전으로교체되기전까지나열된각제품버전및모든이후버전을지원합니다. 이문서에대한최신버전을확인하려면 http://www.vmware.com/kr/support/pubs 를참조하십시오. KO-002230-00 vrealize Automation
More information歯처리.PDF
E06 (Exception) 1 (Report) : { $I- } { I/O } Assign(InFile, InputName); Reset(InFile); { $I+ } { I/O } if IOResult 0 then { }; (Exception) 2 2 (Settling State) Post OnValidate BeforePost Post Settling
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 informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
More information목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault
사용자매뉴얼 JetFlash Vault 100 ( 버전 1.0) 1 목차 1. 시스템요구사항... 3 2. 암호및힌트설정 ( 윈도우 )... 3 3. JetFlash Vault 시작하기 ( 윈도우 )... 7 4. JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 찾아보기... 10 JetFlash
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<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>
게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()
More information1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation
1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation Board(EVB B/D) 들과 TCP/IP Protocol로연결되며, 연결된 TCP/IP
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More informationEndpoint Protector - Active Directory Deployment Guide
Version 1.0.0.1 Active Directory 배포가이드 I Endpoint Protector Active Directory Deployment Guide 목차 1. 소개...1 2. WMI 필터생성... 2 3. EPP 배포 GPO 생성... 9 4. 각각의 GPO 에해당하는 WMI 연결... 12 5.OU 에 GPO 연결... 14 6. 중요공지사항
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법
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 informationIP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1
IP 심화 º 각 P 의게이트웨이는해당네트워크의마지막주소를사용한다. - P1 (210.220.10.1/26) 의게이트웨이 (5의 Fa0/0) : 210.220.10.63 /26 = 255.255.255.192 호스트비트수 : 32-26 = 6 비트 => = 64 그러므로 P1의 IP 210.220.10.1 중서브넷마스크에의거 26비트는변함이없고, 나머지 6비트가호스트비트로변하므로
More information제8장 자바 GUI 프로그래밍 II
제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로
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제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호
제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법
More information본 강의에 들어가기 전
1 목포해양대해양컴퓨터공학과 2 장. TCP 소켓 네트워크프로그램설계 2 목포해양대해양컴퓨터공학과 목차 제 2장 TCP 소켓 1. IPv4 TCP 클라이언트 2. IPv4 TCP 서버 3. 소켓의생성과해지 4. 주소지정 5. 소켓에연결 6. 소켓을주소에바인딩하기 7. 클라이언트의연결요청처리 8. 데이터주고받기 9. IPv6의사용 3 목포해양대해양컴퓨터공학과
More informationMicrosoft PowerPoint - chap01-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 학습목표 프로그래밍의 기본 개념을
More information1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아
LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml
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 information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 16 강. 파일입출력목차 파일입출력기초 파일입출력모드 텍스트파일과이진파일 이진파일입출력 임의접근 1 /18 16 강. 파일입출력파일입출력기초 파일입출력과정 파일스트림객체생성 파일열기 사용 : 기본적으로표준입출력객체 (cin, cout) 사용방법과동일 파일닫기 파일스트림클래스의종류
More information17장 클래스와 메소드
17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는
More information소프트웨어공학 Tutorial #2: StarUML Eun Man Choi
소프트웨어공학 Tutorial #2: StarUML Eun Man Choi emchoi@dgu.ac.kr Contents l StarUML 개요 l StarUML 소개및특징 l 주요기능 l StarUML 화면소개 l StarUML 설치 l StarUML 다운 & 설치하기 l 연습 l 사용사례다이어그램그리기 l 클래스다이어그램그리기 l 순서다이어그램그리기 2
More information일반적인 네트워크의 구성은 다음과 같다
W5200 Errata Sheet Document History Ver 1.0.0 (Feb. 23, 2012) First release (erratum 1) Ver 1.0.1 (Mar. 28, 2012) Add a solution for erratum 1, 2 Ver 1.0.2 (Apr. 03, 2012) Add a solution for erratum 3
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationOPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block
More informationPowerPoint Presentation
객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television
More informationPowerPoint 프레젠테이션
HTML5 웹프로그래밍입문 부록. 웹서버구축하기 1 목차 A.1 웹서버시스템 A.2 PHP 사용하기 A.3 데이터베이스연결하기 2 A.1 웹서버시스템 3 웹서버의구축 웹서버컴퓨터구축 웹서버소프트웨어설치및실행 아파치 (Apache) 웹서버가대표적 서버실행프로그램 HTML5 폼을전달받아처리 PHP, JSP, Python 등 데이터베이스시스템 서버측에데이터를저장및효율적관리
More information제1장 Unix란 무엇인가?
1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.
More information목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4
ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]
More information어댑터뷰
04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결
More informationEMBARCADERO TECHNOLOGIES (Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :
#3 (RAD STUDIO) In www.devgear.co.kr 2016.05.23 EMBARCADERO TECHNOLOGIES (Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory : hskim@embarcadero.kr
More information전송계층프로토콜 TCP(Transmission Control Protocol) 전송계층에서동작하는연결지향형 (connectionoriented) 프로토콜 데이터의흐름을관리하고, 데이터가정확한지검증하며통신 쓰리웨이핸드셰이킹 (three-way handshaking) 을통
전송계층프로토콜 TCP(Transmission Control Protocol) 전송계층에서동작하는연결지향형 (connectionoriented) 프로토콜 데이터의흐름을관리하고, 데이터가정확한지검증하며통신 쓰리웨이핸드셰이킹 (three-way handshaking) 을통해연결설정 특징 - 높은신뢰성 - 가상회선연결방식 - 연결의설정과해제 - 데이터체크섬 - 시간초과와재전송
More information<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 24 장입출력 이번장에서학습할내용 스트림이란? 스트림의분류 바이트스트림 문자스트림 형식입출력 명령어행에서입출력 파일입출력 스트림을이용한입출력에대하여살펴봅시다. 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 스트림들은연결될수있다. 중간점검문제 1. 자바에서는입출력을무엇이라고추상화하는가?
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