1581, 10/80 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   netwow1
   http://www.elhackeer.net
   ÀÚ¹Ù ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö °­Àǹè¿ì½ÇºÐ

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=244 [º¹»ç]


¢Á ÀÚ¹Ù ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö
nURL(Uniform Resource Locator)
   protocol://hostname[:port]/path/filename#section

   ÇÁ·ÎÅäÄÝ¿¡´Â ´ÙÀ½°ú °°Àº °ÍÀÌ ÀÖ´Ù.
   file       : ÇÏµå µð½ºÅ©¿¡ ÀÖ´Â ÆÄÀÏ
   ftp         : FTP ¼­¹ö¿¡ ¿¬°á
   http        : À¥¼­¹ö¿¡ ¿¬°á
   gopher   : gopher ¼­¹ö¿¡ ¿¬°á
   news    : usenet ´º½º ±×·ì¿¡ ¿¬°á
   telnet          : ÅÚ³Ý ¼­ºñ½º¸¦ ÀÌ¿ë
   wais          : wais ¼­¹ö¿¡ ¿¬°á
import java.awt.*; import java.net.*; import java.applet.Applet;  public class URLButton extends Applet {  URL url = null;  String title = null;    public void init() {   String urlString = null;   setLayout(new GridLayout(1,1));   title = getParameter("title");   if(title == null)       title = "URLButton";       urlString = getParameter("url");   if(urlString == null)          urlString = "http://";          try{           url = new URL(urlString);          }catch(MalformedURLException e) {           System.out.println("Invalid URL : " + urlString);          }          Button site = new Button(title);          add(site);          resize(100, 60);  }    public boolean action(Event e, Object arg) {   if(e.target instanceof Button) {    getAppletContext().showDocument(url);   }   return false;  } }        
¡×URLButton.java

<html> <body bgcolor="#ffffff"> <applet code = URLButton.class width=100 height=50> <param name=title value="WebZine"> <param name=url value="http://203.253.23.3/special.shtml"> </applet>  <applet code = URLButton.class width=100 height=50> <param name=title value="BBS"> <param name=url value="http://203.253.24.55/~bbs/"> </applet>  <applet code = URLButton.class width=100 height=50> <param name=title value="WebNews"> <param name=url value="http://203.253.23.3/"> </applet>  <applet code = URLButton.class width=100 height=50> <param name=title value="³»¿ÜÄÄÇ»ÅÍ"> <param name=url value="http://www.nwcom.co.kr"> </applet>  </html>        
¡×URLButton.html


¡×½ÇÇà ¿¹




nMalformedURLException   ÁöÁ¤µÈ URLÀÌ À¯È¿ÇÏÁö ¾ÊÀ½À» ³ªÅ¸³½´Ù.
ngetAppletContext
  ¡×¾ÖÇø´ÀÌ ³ªÅ¸³¯ ºê¶ó¿ìÀú¸¦ Ç¥ÇöÇÑ´Ù.
  ¡×¾ÖÇø´¿¡ ´ëÇÑ AppletContext¸¦ ±¸ÇÑ´Ù.
nshowDocument
  public void showDocument( URL url );
  public void showDocument( URL url, String target );
  ¡×ºê¶ó¿ìÀú¿¡ »õ·Î¿î ¹®¼­¸¦ ¿¬´Ù.
  ¡×parameter
   ¡×url          ºê¶ó¿ìÀú°¡ ¿ÀÇÂÇÒ ¹®¼­¸¦ °¡¸®Å´
°ª        Àǹ̠       
"_self" "_parent" "_top" "_blank"        ¾ÖÇø´ÀÌ »ðÀÔµÈ °Í°ú µ¿ÀÏÇÑ ÇÁ·¹ÀÓ ¾ÖÇø´ÀÌ »ðÀÔµÈ ÇÁ·¹ÀÓÀÇ ºÎ¸ð ÇÁ·¹ÀÓ ¾ÖÇø´ÀÌ ³ªÅ¸³¯ ÃÖ»óÀ§ ¼öÁØÀÇ À©µµ¿ì »õ·Î¿î ÃÖ»óÀ§ ¼öÁØÀÇ À̸§ ¾ø´Â ÇÁ·¹ÀÓ        

   ¡×target    ³ªÅ¸³¾ »õ·Î¿î ¹®¼­
n¼ÒÄÏ
     ÀϹÝÀûÀ¸·Î C ¾ð¾î¸¦ ÀÌ¿ëÇؼ­ ³×Æ®¿öÅ© ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °æ¿ì, ÇÁ·Î±×·¥ ÀýÂ÷´Â
   ´ÙÀ½ ±×¸²°ú °°´Ù.

  ¡×¼­¹ö ÇÁ·Î±×·¥Àº ¼ÒÄÏÀ» »ý¼ºÇÏ°í, bind()¸¦ ÀÌ¿ëÇؼ­ ¼ÒÄÏ°ú ¾îµå·¹½º ¹× Æ÷Æ®¸¦ °áÇÕ½ÃŲ´Ù.
  ¡×listen() ÇÔ¼ö¸¦ È£ÃâÇÏ°í, bind()ÇÔ¼ö¸¦ È£ÃâÇؼ­ Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ ¿äûÀÌ ¿Ã ¶§±îÁö
    ºí·ÏµÇ¾î¼­ ±â´Ù¸°´Ù.
  ¡×bind() ÇÔ¼ö´Â Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ ¿äûÀÌ ¿À¸é Ŭ¶óÀ̾ðÆ®¿Í Åë½ÅÇÒ ¼ö ÀÖ´Â ¼ÒÄÏÀ»
    ¸¸µé¾î¼­ ¸®ÅÏÇÑ´Ù.
  ¡×¸®ÅÏµÈ ¼ÒÄÏÀ» ÅëÇؼ­ ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®´Â read()/write() ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ­ Åë½ÅÇÒ ¼ö ÀÖ´Ù.
  ¡×Ŭ¶óÀ̾ðÆ®¿¡¼­´Â ¼ÒÄÏÀ» »ý¼ºÇÏ°í, connect() ÇÔ¼ö¸¦ ÅëÇؼ­ ¼­¹ö¿¡ ¿¬°áÀ» ½ÃµµÇÑ´Ù.
  ¡×connect()¸¦ È£ÃâÇϸé, ¼­¹ö¿¡¼­´Â accept() ÇÔ¼ö°¡ ½ÇÇàµÈ´Ù. ¼­¹ö¿Í ¿¬°áµÇ¸é ¼ÒÄÏÀ»
    ÅëÇØ read/write¸¦ ÇÒ ¼ö ÀÖ´Ù




Server                        Client
























n¼­¹ö ¼ÒÄÏ
      ÀÚ¹Ù¿¡¼­ ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§Çؼ­´Â java.net ÆÐÅ°Áö¸¦ ÀÌ¿ëÇÑ´Ù.

  ¡×¼­¹öÇÁ·Î±×·¥À» ¸¸µé ¶§´Â ¼ÒÄÏÀ» ¸¸µé°í, bind()ÇÏ°í listen()ÇÏ´Â ÀϵéÀÌ Ç×»ó ¹Ýº¹µÈ´Ù.
  ¡×ÀÚ¹Ù¿¡¼­´Â ÀÌ·¯ÇÑ ¹Ýº¹ ÀÛ¾÷À» Á¦°ÅÇϱâ À§Çؼ­ ¼­¹ö ¼ÒÄÏ(ServerSocket)À̶ó´Â
    Å¬·¡½º¸¦ ¸¸µé¾ú´Ù.
  ¡×ÇÁ·Î±×·¡¸Ó´Â ¼­¹ö ¼ÒÄÏÀ» ¸¸µé¾î¼­ accept() ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù.
  ¡×accept() ¸Þ¼Òµå´Â Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ connectionÀÌ ¿äûµÉ ¶§±îÁö ºí·ÏµÇ¾ú´Ù°¡, ¿äûÀÌ
    µé¾î¿À¸é Ŭ¶óÀ̾ðÆ®¿Í Åë½ÅÇÒ ¼ö ÀÖ´Â ¼ÒÄÏÀ» »ý¼ºÇؼ­ ¸®ÅÏÇØÁØ´Ù.
  ¡×¼­¹ö´Â ¸®ÅÏµÈ ¼ÒÄÏÀ» ÀÌ¿ëÇؼ­ Ŭ¶óÀ̾ðÆ®¿Í Åë½ÅÇÒ ¼ö ÀÖ´Ù.
  ¡×Ŭ¶óÀ̾ðÆ®¿¡¼­µµ ¸¶Âù°¡Áö·Î ¹Ýº¹µÇ´Â ÀÛ¾÷À» Á¦°ÅÇϱâ À§ÇØ, connect()¶ó´Â ÇÔ¼ö¸¦
    È£ÃâÇÒ ÇÊ¿ä°¡ ¾øµµ·Ï ¼ÒÄÏ(Socket)À̶ó´Â Ŭ·¡½º¸¦ ¸¸µé¾ú´Ù.
  ¡×µû¶ó¼­, Ŭ¶óÀ̾ðÆ®¿¡¼­´Â ¼ÒÄÏÀ» ¸¸µé°í, ¼ÒÄÏÀ» ÀÌ¿ëÇؼ­ ¸¸µç I/O ½ºÆ®¸²À» ÀÌ¿ëÇؼ­
    ¼­¹ö¿Í Åë½ÅÇÒ ¼ö ÀÖ´Ù.



¼­¹ö                                 Ŭ¶óÀ̾ðÆ®
























¢Á ³×Æ®¿öÅ©¿Í ¼ÒÄÏ
nŬ¶óÀ̾ðÆ®-¼­¹ö ¾îÇø®ÄÉÀ̼Ç
   ¡×¿¬°á Á᫐ ÇÁ·ÎÅäÄÝ
     ¡×Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö »çÀÌ¿¡ Àü¿ëÀÇ ¸µÅ©°¡ ¼³Á¤µÈ´Ù.
     ¡×µÎ ÇÁ·Î¼¼½º »çÀÌ¿¡¼­ Àü´ÞµÇ´Â ¸Þ½ÃÁö´Â Á¤È®ÇÑ ¼ø¼­´ë·Î Àü´ÞµÇ´Â °ÍÀ» º¸Àå ¹ÞÀ» ¼ö ÀÖ´Ù.
     ¡×´ëºÎºÐÀÇ ³×Æ®¿öÅ· ¾îÇø®ÄÉÀ̼ÇÀº ½Å·ÚÇÒ ¼ö ÀÖ´Â Åë½Å ÇÁ·ÎÅäÄÝÀÌ ¿ä±¸µÇ¹Ç·Î
       ¿¬°á Áß½ÉÀûÀÌ´Ù.
     ¡×¿¹)TCP/IPÀÇ TCP(Transfer Control Protocol)

   ¡×ºñ¿¬°á¼º ÇÁ·ÎÅäÄÝ
     ¡×Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö»çÀÌ¿¡ Àü¿ë¼±ÀÌ ¼³Á¤µÇÁö ¾Ê´Â´Ù.
     ¡×Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö´Â ¸Þ½ÃÁö¸¦ µ¥ÀÌÅͱ׷¥ ÆÐŶ(Datagram Packet)ÇüÅ·Πº¸³»¸ç,
       °¢°¢¿¡´Â ¸ñÀûÁöÀÇ ÁÖ¼Ò°¡ µé¾îÀÖ´Ù.
     ¡×³×Æ®¿öÅ©¿¡¼­´Â ÆÐŶÀÌ µé¾îÀÖ´Â ¸ñÀûÁöÀÇ ÁÖ¼Ò¸¦ Çص¶ÇÑ ÈÄ ÀÌ ÆÐŶÀ» ¸ñÀûÁö·Î º¸³½´Ù.
     ¡×°¢ ÆÐŶ¿¡´Â ÇÙ½ÉÀÌ µÇ´Â ¸Þ½ÃÁö ¿Ü¿¡µµ ¼Û½ÅÀÚ¿Í ¼ö½ÅÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù.
     ¡×ÆÐŶÀÇ Àü´ÞÀ» º¸Àå¹ÞÀ» ¼ö ¾ø´Ù.
     ¡×¸Þ½ÃÁöÀÇ Àü´Þ ¼ø¼­°¡ Áß¿äÇÏÁö ¾ÊÀº °÷¿¡¼­ »ç¿ëµÉ ¼ö ÀÖ´Ù.
     ¡×¿¹) ŸÀÓ ¼­¹ö ¾îÇø®ÄÉÀ̼Ç
           TCP/IPÀÇ UDP


nÀÎÅÍ³Ý ÁÖ¼Ò(Internet Address)
   ¡×ÀÎÅÍ³Ý ID - ÀÎÅͳݿ¡¼­ÀÇ ³×Æ®¿öÅ©¸¦ ÁöÁ¤ÇÑ °Í
   ¡×Subnet ID - Áö¿ª ³×Æ®¿öÅ©(¼­ºê³Ý)¸¦ Ç¥ÇöÇÑ°Í
   ¡×Host ID - ¼­ºê³Ý¿¡¼­ È£½ºÆ®¿¡ ´ëÇÑ ½Äº°ÀÚ
Internet ID        Subnet ID        Host ID        
203.248        255        2        



n¿Ö ¼ÒÄÏÀÌ ÇÊ¿äÇÑ°¡?
   ¡×¾îÇø®ÄÉÀ̼ǰú ³×Æ®¿öÅ© »çÀÌÀÇ ÀÎÅÍÆäÀ̽º¸¦ À§ÇØ ¼ÒÄÏÀÌ ÇÊ¿äÇÏ´Ù.
   ¡×Ŭ¶óÀ̾ðÆ®-¼­¹ö ¾îÇø®ÄÉÀ̼ǿ¡¼­ ´ëºÎºÐÀÇ Åë½ÅÀº Á¡-´ë-Á¡(Point-to-Point),
     Áï Åë½ÅÀÇ ³¡Á¡¿¡ ¾îÇø®ÄÉÀ̼Ç(Ŭ¶óÀ̾ðÆ® ¶Ç´Â ¼­¹ö)ÀÌ Á¸ÀçÇÏ´Â ÇüÅÂÀÌ´Ù.
   ¡×¼ÒÄÏÀº ´ÜÀÏ ½Ã½ºÅÛ È¤Àº ¼­·Î  ´Ù¸¥ ½Ã½ºÅÛ¿¡ Á¸ÀçÇÏ´Â ÇÁ·Î¼¼½º°£ Åë½ÅÀ» À§ÇØ ³¡Á¡
     ¿ªÇÒÀ» ÇÑ´Ù.
   ¡×¾îÇø®ÄÉÀ̼ÇÀº »ó´ë¹æ¿¡°Ô ¸Þ½ÃÁö¸¦ º¸³¿À¸·Î½á Åë½ÅÀ» ÇÑ´Ù.
   ¡×ÀÌ ¸Þ½ÃÁö´Â ³×Æ®¿öÅ©¿¡¼­ ¿¬¼ÓµÈ ÆÐŶÀ¸·Î Àü´ÞµÈ´Ù.
   ¡×¾îÇø®ÄÉÀ̼ÇÀº ÇÊ¿äÇÒ ¶§ ¿î¿µÃ¼Á¦¿¡°Ô ¼ÒÄÏÀ» »ý¼ºÇØ´Þ¶ó´Â ¿äûÀ» ÇÑ´Ù.
   ¡×½Ã½ºÅÛÀº ¾îÇø®ÄÉÀ̼ÇÀÌ »õ·ÎÀÌ »ý¼ºµÈ ¼ÒÄÏÀ» ÂüÁ¶Çϱâ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Â
     Á¤¼ö(Small Integer) ÇüÅÂÀÇ ¼ÒÄÏ ½Äº°ÀÚ¸¦ ¸®ÅÏÇÑ´Ù.
nŬ·¡½º¿Í ÀÎÅÍÆäÀ̽º ¼³¸í
Ŭ·¡½º/ÀÎÅÍÆäÀ̽º        ¼³¸í        
InetAddress ServerSocket Socket DatagramSocket DatagramPacket SocketImpl  SocketImplFactory        ÀÎÅÍ³Ý ÁÖ¼Ò Ç¥Çö ¼­¹ö ¼ÒÄÏ. ¼ÒÄÏ ÀÛ¾÷À» À§ÇÑ ½ÇÁ¦ ±¸Çö¿¡´Â SocketImpl Ŭ·¡½º¸¦ »ç¿ëÇÑ´Ù. Ŭ¶óÀ̾ðÆ® ¼ÒÄÏ. ¼ÒÄÏ ÀÛ¾÷À» À§ÇÑ ½ÇÁ¦ ±¸Çö¿¡´Â SocketImpl Ŭ·¡½º¸¦ »ç¿ëÇÑ´Ù. ºñ¿¬°á¼º ÇÁ·ÎÅäÄÝÀ» ±¸ÇöÇÑ µ¥ÀÌÅͱ׷¥ ¼ÒÄÏ. Àü´ÞµÇ´Â µ¥ÀÌÅÍ¿Í ¸ñÀûÁö È£½ºÆ®¿¡ ´ëÇÑ »ó¼¼ Á¤º¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â µ¥ÀÌÅͱ׷¥ ÆÐŶ ½ÇÁ¦ ±¸ÇöÀ» À§Çؼ­´Â ²À ¼­ºêŬ·¡½ºÈ­µÇ¾î¾ß ÇÑ´Ù. ServerSocket°ú Socket Ŭ·¡½º¿¡ ´ëÇÑ ½ÇÁ¦ ¼ÒÄÏ ±¸Çö. ÀÌ ÀÎÅÍÆäÀ̽º¿¡ Á¤ÀǵǾî ÀÖ´Â ½ÇÁ¦ SocketImpl ÀνºÅϽº¸¦ »ý¼ºÇϱâ À§ÇÑ ÀÎÅÍÆäÀ̽º        










¢Á Client/Server - Stream Socket »ç¿ë

nServer - Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍÀÇ Á¢¼ÓÀ» ¹Þ¾ÆµéÀÌ°í, Ŭ¶óÀ̾ðÆ®·Î µ¥ÀÌÅÍ(String)¸¦ º¸³»°í,
           Á¢¼ÓÀ» Á¾·áÇÑ´Ù.


nClient - ¼­¹ö·ÎºÎÅÍ º¸³»Áø Á¤º¸¸¦ Àаí, ±× Á¤º¸¸¦ È­¸é¿¡ Ãâ·ÂÇÑ´Ù.










nServerSocket
  public ServerSocket(int port) throws IOException
  public ServerSocket(int port, int lisn_time) throws IOException  

  ¡×Parameter
   ¡×port        ¼­¹ö°¡ °áÇÕµÉ ·ÎÄà Æ÷Æ® ¹øÈ£
   ¡×lisn_time        ¼­¹ö°¡ Æ÷Æ®¿¡¼­ Á¢¼ÓÀ» ±â´Ù¸± ½Ã°£


¡à Server
import java.io.*;
import java.net.*;
import java.awt.*;

public class Server extends Frame{
    TextArea display;

    public Server()
    {
        super("Server");
        display = new TextArea(20, 5);
        add("Center", display);
        resize(300, 150);
        show();
    }

    public void runServer()
    {
        ServerSocket server;
        Socket connection;
        OutputStream output;

        try {
             server = new ServerSocket(5000, 100);
             connection = server.accept();  // Ŭ¶óÀ̾ðÆ®ÀÇ Á¢¼ÓÀ» ¹Þ¾ÆµéÀδÙ.
             display.setText("Connection received...\n");
             display.appendText("Sending data...\n");
             output = connection.getOutputStream(); // Ŭ¶óÀ̾ðÆ®·Î µ¥ÀÌÅ͸¦ º¸³½´Ù.
             String s = new String("Connection successful\n");
             for(int i = 0; i < s.length(); i++)
                 output.write( (int) s.charAt(i) );
             display.appendText("Transmission complete. Closing socket.\n");
             connection.close();     // Á¢¼ÓÀ» Á¾·áÇÑ´Ù.
        } catch(IOException e){
             e.printStackTrace();
        }
    }

    public boolean handleEvent(Event e)
    {
        if(e.id == Event.WINDOW_DESTROY){
           hide();
           dispose();
           System.exit(0);
        }
        return super.handleEvent(e);
    }

    public static void main(String args[])
    {
        Server s = new Server();
        s.runServer();
    }
}  
nSocket
  public Socket(String host, int port) throws IOException;
  public Socket(String host, int port, boolean sock_type) throws IOException;
  public Socket(InetAddress inet, int port) throws IOException;
  public Socket(InetAddress inet, int port, boolean sock_type) throws IOException;

  ¡×Parameter
   ¡×host          Á¢¼ÓÇÒ È£½ºÆ® ¸Ó½Å À̸§
   ¡×port            ¼­¹ö°¡ °áÇÕµÉ ·ÎÄà Æ÷Æ® ¹øÈ£
   ¡×sock_type  µ¥ÀÌÅͱ׷¥ ¼ÒÄÏÀÎÁö ½ºÆ®¸² ¼ÒÄÏÀÎÁö¸¦ ³ªÅ¸³»´Â °ª
   ¡×inet        Á¢¼ÓÇÒ È£½ºÆ® ¸Ó½ÅÀÇ InetAddress

ngetLocalHost()  ·ÎÄà ȣ½ºÆ®ÀÇ InetAddress¸¦ ±¸ÇÔ



¡à Client
import java.io.*;
import java.net.*;
import java.awt.*;

public class Client extends Frame{
    TextArea display;

    public Client()
    {
        super("Client");
        display = new TextArea(20, 20);
        add("Center", display);
        resize(300, 150);
        show();
    }
    public void runClient()
    {
        Socket client;
        InputStream input;

        try{
             client = new Socket(InetAddress.getLocalHost(),5000);
             display.appendText("Created Socket\n");

             input = client.getInputStream();  // ¼­¹ö·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ¹Þ´Â´Ù.
             display.appendText("Created input Stream\n");
             display.appendText("The text from the server is:\n\t");
             char c;

             // ¼­¹ö·ÎºÎÅÍ ¹ÞÀº µ¥ÀÌÅ͸¦ °³ÇàÀÌ µÉ ¶§±îÁö ÀоîµéÀÎÈÄ, ¹®ÀÚ·Î Çüº¯È¯ ÇÑ´Ù.
             while((c = (char) input.read()) != '\n')  
                display.appendText(String.valueOf(c));  // ¹®ÀÚ¸¦ ¹®ÀÚ¿­·Î Ãâ·ÂÇÑ´Ù.
                display.appendText("\n");
                client.close();   // Ŭ¶óÀ̾ðÆ®¸¦ Á¾·áÇÑ´Ù.
        } catch(IOException e){
             e.printStackTrace();
        }
    }          

    public boolean handleEvent(Event e)
    {
        if(e.id == Event.WINDOW_DESTROY){
           hide();
           dispose();
           System.exit(0);
        }
        return super.handleEvent(e);
    }

    public static void main(String args[])
    {
        Client c = new Client();
        c.runClient();
    }
}












¢Á Client/Server - DatagramSocket/DatagramPacket





nDatagramSocket
  public DatagramSocket() throws SocketException;
  public DatagramSocket(int port) throws SocketException;

  ¡×ºñ¿¬°á¼º ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ ±¸ÇöµÈ Ŭ¶óÀ̾ðÆ®-¼­¹ö ¾îÇø®ÄÉÀ̼ǿ¡¼­ ¼ÒÄÏÀ» Çü¼ºÇÑ´Ù.
  ¡×Ŭ¶óÀ̾ðÆ®´Â µ¥ÀÌÅͱ׷¥ ÆÐŶÀ» »ý¼ºÇÒ ¶§, Æ÷Æ® ¹øÈ£¸¦ ÁöÁ¤ÇÔÀ¸·Î½á ¼­¹ö¿¡ ÆÐŶÀ» º¸³½´Ù.
  ¡×ÀÌ Å¬·¡½º´Â ÆÐŶÀ» ó¸®Çϱâ À§ÇÑ send¿Í receive¸Þ¼Òµå¸¦ °¡Áö°í ÀÖ´Ù.

  ¡×Parameter
   ¡×port       µ¥ÀÌÅͱ׷¥ ¼ÒÄÏÀÌ °áÇÕµÈ ·ÎÄà Æ÷Æ® ¹øÈ£


nDatagramPacket
  public DatagramPacket(byte[] buffer, int length);
  public DatagramPacket(byte[] buffer, int length, InetAddress dest, int port);

  ¡×ºñ¿¬°á¼º ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ ±¸ÇöµÈ Ŭ¶óÀ̾ðÆ®-¼­¹ö ¾îÇø®ÄÉÀ̼ǿ¡¼­ ÆÐŶÀ» Çü¼ºÇÑ´Ù.
  ¡×ÆÐŶÀº DatagramSocket Ŭ·¡½ºÀÇ send ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© target¿¡ Àü´ÞµÈ´Ù.
  ¡×DatagramSocket Ŭ·¡½ºÀÇ receive ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ÆÐŶÀ» ¹Þ¾ÆµéÀδÙ.

  ¡×Parameter
   ¡×buffer            µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ¹ÙÀÌÆ® ¹è¿­
   ¡×length        µ¥ÀÌÅÍ ¹öÆÛÀÇ ±æÀÌ
   ¡×inetAddress       µ¥ÀÌÅͱ׷¥À» ¹Þ¾ÆµéÀÌ´Â IP ÁÖ¼Ò
   ¡×port          µ¥ÀÌÅͱ׷¥À» ¹Þ¾ÆµéÀÌ´Â Æ÷Æ® ¹øÈ£


¡à Server
import java.io.*;
import java.net.*;
import java.awt.*;

public class Server extends Frame{
    TextArea display;

    DatagramPacket sendPacket, receivePacket;
    DatagramSocket sendSocket, receiveSocket;

    public Server()
    {
        super("Server");
        display = new TextArea(20, 10);
        add("Center", display);
        resize(300, 150);
        show();

        try{
             sendSocket = new DatagramSocket();
             receiveSocket = new DatagramSocket(5000);
        } catch(SocketException se){
             se.printStackTrace();
             System.exit(1);
        }  
    }
    public void waitForPackets()
    {
        while(true){
           try{
             byte array[] = new byte[100];     // ÆÐŶ ¼³Á¤
             receivePacket = new DatagramPacket(array, array.length);
             receiveSocket.receive(receivePacket);          // ÆÐŶÀ» ±â´Ù¸°´Ù.
             display.appendText("\nPacket received:" +     // ÆÐŶ ÇÁ·Î¼¼½º
                                "\nFrom host: " + receivePacket.getAddress() +
                                "\nHost port: " + receivePacket.getPort() +
                                "\nLength: " + receivePacket.getLength() +
                                "\nContaining:\n\t");
             byte data[] = receivePacket.getData();
             String received = new String(data, 0);
             display.appendText(received);

             // Ŭ¶óÀ̾ðÆ®¿¡¼­ ¹ÞÀº ÆÐŶÀÇ ¿¡ÄÚ(echo) Á¤º¸¸¦ ´Ù½Ã Ŭ¶óÀ̾ðÆ®·Î µ¹·Áº¸³½´Ù.
             display.appendText("\n\nEcho data to client...");
             sendPacket = new DatagramPacket(data, data.length,
                                               receivePacket.getAddress(), 5001);
             sendSocket.send(sendPacket);
             display.appendText("Packet sent\n");
           } catch(IOException e){
             display.appendText(e.toString() + "\n");
             e.printStackTrace();
           }
        }
    }

    public boolean handleEvent(Event e)
    {
        if(e.id == Event.WINDOW_DESTROY){
            hide();
            dispose();
            System.exit(0);
        }
        return super.handleEvent(e);
    }

    public static void main(String args[])
    {
        Server s = new Server();
        s.waitForPackets();
    }
}
















¡à Client
import java.io.*;
import java.net.*;
import java.awt.*;

public class Client extends Frame{
    TextField enter;  
    TextArea display;
    Panel enterPanel;
    Label enterLabel;

    DatagramPacket sendPacket, receivePacket;
    DatagramSocket sendSocket, receiveSocket;

    public Client()
    {
        super("Client");
        enterPanel = new Panel();
        enterLabel = new Label("Enter message:");
        enter = new TextField(20);
        enterPanel.add(enterLabel);
        enterPanel.add(enter);
        add("North", enterPanel);
        display = new TextArea(20, 10);
        add("Center", display);
        resize(400, 300);
        show();

        try{
             sendSocket = new DatagramSocket();
             receiveSocket = new DatagramSocket(5001);
        } catch(SocketException se){
             se.printStackTrace();
             System.exit(1);
        }  
    }

    public void waitForPackets()
    {
        while(true){
           try{
             byte array[] = new byte[100];   // ÆÐŶ ¼³Á¤
             receivePacket = new DatagramPacket(array, array.length);
             receiveSocket.receive(receivePacket);               // ÆÐŶÀ» ±â´Ù¸°´Ù.
             display.appendText("\nPacket received:" +          // ÆÐŶ ÇÁ·Î¼¼½º
                                "\nFrom host: " + receivePacket.getAddress() +
                                "\nHost port: " + receivePacket.getPort() +
                                "\nLength: " + receivePacket.getLength() +
                                "\nContaining:\n\t");
             byte data[] = receivePacket.getData();
             String received = new String(data, 0);
             display.appendText(received);
           } catch(IOException e){
             display.appendText(e.toString() + "\n");
             e.printStackTrace();
           }
        }
    }

    public boolean handleEvent(Event e)
    {
        if(e.id == Event.WINDOW_DESTROY){
            hide();
            dispose();
            System.exit(0);
        }
        return super.handleEvent(e);
    }

    public boolean action(Event evt, Object o)
    {
        try{
             display.appendText("\nSending packet containing: " + o.toString() + "\n");
             String s = o.toString();
             byte data[] = new byte[100];
             s.getBytes(0, s.length(), data, 0);
             sendPacket = new DatagramPacket(data, s.length(),
                                               InetAddress.getLocalHost(), 5000);
             sendSocket.send(sendPacket);
             display.appendText("Packet sent\n");
        } catch(IOException e){
             display.appendText(e.toString() + "\n");
             e.printStackTrace();
        }            
        return true;
    }
    public static void main(String args[])
    {
        Client c = new Client();
        c.waitForPackets();
    }
}
¢Á ¿ø°Ý È£½ºÆ®¸¦ ¼öÇàÇÏ´Â ³×Æ®¿÷ ¾îÇø®ÄÉÀ̼Ç
n¿ø¸®
  ¡×¾Ë°í ÀÖ´Â Æ÷Æ®¸¦ ÀÎÅÍ³Ý ¼ÒÄÏÀ¸·Î ¿­·Á¸é ÅÚ³Ý Æ÷Ʈó·³ ¿ø°Ý È£½ºÆ®ÀÇ ¼öÇàÀ» ¾Ë·Á¾ß
    ÇÑ´Ù.
  ¡×È£½ºÆ® À̸§À» °®°í ÅؽºÆ® Çʵ带 »ç¿ëÇØ¾ß ÇÑ´Ù.
  ¡×¼ÒÄÏÀ» ¿­¾î¾ß ÇÑ´Ù.

n¹æ¹ý
  ¡×java.net ÆÐÅ°Áö´Â ÀÎÅÍ³Ý ¼ÒÄÏÀ» ´Ù·ç´Â Ŭ·¡½º¸¦ Æ÷ÇÔÇϸç, ÀÌ Å¬·¡½º¸¦ SocketÀ̶ó
    ºÎ¸¥´Ù.
  ¡×»ý¼ºÀڴ ȣ½ºÆ® À̸§°ú Æ÷Æ® ¹øÈ£¸¦ ÇÒ´çÇϱâ À§ÇØ ¼ÒÄÏÀ» Á¤ÀÇÇÑ´Ù.
  ¡×È£½ºÆ® À̸§Àº string Çü½ÄÀÌ°í, Æ÷Æ® ¹øÈ£´Â int ÇüÅ·Π¼ÒÄÏÀ» ¿­¾î ÀνºÅϽº¸¦ ¼±¾ðÇÑ
    ´ÙÀ½ ¼ÒÄÏ »ý¼ºÀÚ¸¦ »ç¿ëÇØ ¸¸µç´Ù.

































import java.awt.*;
import java.io.*;
import java.net.*;

/* ¾îÇø®ÄÉÀÌ¼Ç Å¬·¡½º */
public class Ping extends Frame implements Runnable{
   Socket socket;           /* ¿ø°Ý È£½ºÆ®°¡ »ì¾ÆÀÖ´ÂÁö °áÁ¤ÇÏ´Â SocketÀÇ ÀνºÅϽº */
   TextField addrField;  /* È£½ºÆ® À̸§ÀÌ µé¾î°¥ ÅؽºÆ® Çʵå */
   Button stopButton;       /* Á¤Áö ¹öÆ° */
   TextArea content;          /* ¿ø°Ý È£½ºÆ®ÀÇ »óŸ¦ Ãâ·ÂÇÏ´Â ÅؽºÆ® ¿µ¿ª */
   Thread thread;       /* ¼ÒÄÏÀÇ È°µ¿À¸·ÎºÎÅÍ »ç¿ëÀÚÀÇ È°µ¿À» ºÐ¸®ÇÏ´Â µ¥ »ç¿ëÇÏ´Â ½º·¹µå */

   int insertPos;              /* ÅؽºÆ® ¿µ¿ª¿¡¼­ÀÇ »ðÀÔ À§Ä¡ */

   /* »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ »ý¼ºÇÏ´Â »ý¼ºÀÚ */
   public Ping()
   {
       int i;
       setTitle("Ping");
       setLayout(new BorderLayout());
       addrField = new TextField("", 20);
       stopButton = new Button("Stop");
       content = new TextArea("", 24, 80);
       content.setEditable(false);
       insertPos = 0;
       Panel p = new Panel();
       p.setLayout(new FlowLayout());
       p.add(addrField);
       p.add(stopButton);
       add("North", p);
       add("Center", content);
       thread = new Thread(this);
       resize(400, 300);
       show();
   }
  
   /* ¾×¼Ç À̺¥Æ®¸¦ ´Ù·é´Ù.
    * Å°°¡ ´­·ÁÁö´Â »óÅ¿¡ µû¶ó ¼ÒÄÏ ½º·¹µå¸¦ ¿­°í
    * Á¤Áö ¹öÆ°ÀÌ ´­·ÁÁö¸é ¼ÒÄÏ ½º·¹µå°¡ Á¤ÁöÇÏ´Â »óŸ¦ ¹Ýȯ
    * @param evt - À̺¥Æ® °´Ã¼
    * @param obj - À̺¥Æ®°¡ ¹Þ´Â °´Ã¼
    */
   public boolean action(Event evt, Object obj)
   {
      if(evt.target == addrField) {
         thread.stop();
         thread = new Thread(this);
         thread.start();
         return true;
      }
      if(evt.target == stopButton) {
         thread.stop();
      }
      return false;
   }
   /* ¼ÒÄÏÀ» ¿©´Â ½º·¹µå
    * ÅÚ³Ý Æ÷Æ®(23) ¿­±â¸¦ ½ÃµµÇÑ´Ù.
    */
   public void run()
   {
       String name;
       name = addrField.getText();
          try{
            try{
                 socket = new Socket(name, 23);
            } catch(UnknownHostException e) {
              insertString(name + " : unknown host\n");
              return;
            }
          }catch(IOException e2){
              insertString("Unable to open socket\n");
              return;
          }
              insertString(name + " is alive\n");
              try{
                   socket.close();
          }catch(IOException e2) {
              insertString("IOException closing socket\n");
              return;
          }
   }

   /* ÅؽºÆ® ¿µ¿ª ³¡¿¡ ÅؽºÆ®¸¦ ´õÇÏ´Â µ¥ ÇÊ¿äÇÑ ¸Þ¼Òµå
    * @param s - ´õÇÒ ÅؽºÆ®
    */
   void insertString(String s)
   {
       content.insertText(s, insertPos);
       insertPos += s.length();
   }

   /* ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÃÀÛÁ¡
    * @param args - ¸í·ÉÇà ÀÎÀÚ
    */
   public static void main(String args[])
   {
       new Ping();
   }
}

ninsertText(String, int)
  public void insertText(String ins_text, int index);
  public abstract void insertText(String txt, int pos);

¡×Parameter
  ¡×ins_text       ÁöÁ¤µÈ À妽º¿¡ »ðÀ﵃ ÅؽºÆ®
  ¡×txt            TextArea °´Ã¼¿¡ »ðÀ﵃ ÅؽºÆ®
  ¡×index/pos      »õ·Î¿î ÅؽºÆ®°¡ »ðÀ﵃ À§Ä¡
¢Á HTTP·Î µ¥ÀÌÅÍ ¹Þ±â
n¿ø¸®
  ¡×ÅؽºÆ® ÇÊµå ¾È¿¡ URLÀÌ µé¾î°¡°í, ÆíÁýÇÒ ¼ö ¾ø´Â ÅؽºÆ® ¿µ¿ª ¾È¿¡ URL·ÎºÎÅÍ ¹Þ¾Æ¿Â
    ¹®¼­¸¦ ³ªÅ¸³»¾î¾ß ÇÑ´Ù.

n¹æ¹ý
  ¡×URL ¿¬°áÀ» URL Ŭ·¡½º ¾È¿¡ ÀÖ´Â openConnection() ¸Þ¼Òµå¿¡ ÀÇÇØ ¸¸µé¾îÁø´Ù.
  ¡×URLConnection°ú ¿¬°áµÈ ÀÔ·Â ½ºÆ®¸²Àº GetInputStream() ¸Þ¼Òµå¿¡ ÀÇÇØ °Ë»öµÈ´Ù.
    ( µ¥ÀÌÅÍ´Â DataInputStream Ŭ·¡½º ¾È¿¡ ÀÖ´Â ¸Þ¼Òµå¸¦ »ç¿ëÇؼ­ µ¥ÀÌÅÍ ÀÔ·Â ½ºÆ®¸²À»
      ÀоîµéÀδÙ.)
  ¡×ºÐ¸®µÈ ½º·¹µå´Â »ç¿ëÀÚ ÀԷ¿¡ ÀÇÇØ ÇϳªÀÇ ½ºÆ®¸²À¸·Î È°µ¿ÇÏ°Ô µÇ¹Ç·Î µ¥ÀÌÅ͸¦
    ºñµ¿±âÀûÀ¸·Î ÀÐÀ» ¼ö ÀÖ´Ù.
  ¡×»ç¿ëÀÚ°¡ Stop ¹öÆ°À» ´©¸£¸é ½ºÆ®¸² È°µ¿ÀÌ Á¾°áµÈ´Ù.



































import java.awt.*;
import java.io.*;
import java.net.*;

/* ¾îÇø®ÄÉÀÌ¼Ç Å¬·¡½º */
public class ViewSource extends Frame implements Runnable{
    String s;
    URL u;
    URLConnection uc;         /* ¿¬°áµÉ URL */
    TextField location;     /* URLÀÌ ÀÔ·ÂµÉ TextField */
    TextArea content;      /* ¹®ÀåÀÇ ¼Ò½º¸¦ º¸¿©ÁÖ´Â ÅؽºÆ® ¿µ¿ª */
    Thread thread;         /* ¹®¼­¸¦ Àбâ À§ÇØ »ç¿ëµÇ´Â ºÐ¸®µÈ ½º·¹µå */
    int insertPos = 0;             /* ³»¿ë ¿µ¿ªÀÇ »ðÀÔ À§Ä¡ */

    /* »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ »ý¼ºÇÏ´Â »ý¼ºÀÚ */
    public ViewSource()
    {
        int i;
        setTitle("View Source");
        setLayout(new BorderLayout());
        location = new TextField("", 20);
        content = new TextArea("", 24, 80);
        content.setEditable(false);
        Panel p = new Panel();
        p.setLayout(new FlowLayout());
        p.add(location);
        p.add(new Button("Stop"));
        add("North", p);
        add("Center", content);
        thread = new Thread(this);
        resize(400, 300);
        show();
    }

    /* Å°°¡ ´­·ÁÁö´Â °Í°ú Á¤Áö ¹öÆ°
     * @param e - À̺¥Æ® °´Ã¼
     */
    public boolean handleEvent(Event e)
    {
        if((e.target instanceof TextField) && (e.id == Event.ACTION_EVENT)){
             thread.stop();
             content.replaceText("", 0, insertPos);
             thread = new Thread(this);
             thread.start();
             return true;
        }
        if((e.target instanceof Button) && (e.id == Event.ACTION_EVENT)){
             thread.stop();
             return true;
        }
         return false;
    }

    /* URL·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ÀÐ°í ³»¿ë ¿µ¿ª¿¡ Ç¥½ÃÇÏ´Â ¸Þ¼Òµå */
    public void run()
    {
        try{
              u = new URL(location.getText());
        }catch(MalformedURLException e) {
        }
        try{
              uc = u.openConnection();
        }catch(IOException e){
        }
        DataInputStream in = null;
        try{
              in = new DataInputStream(new BufferedInputStream(uc.getInputStream()));
        }catch(IOException e){
        }
        String line;
        insertPos = 0;
        try{
              while((line = in.readLine()) != null)
              {
                 line += "\n";
                 content.insertText(line, insertPos);
                 insertPos += line.length();
              }
        }catch(IOException e){
         System.out.println("Error in reading file");
        }
    }

    /* ¾îÇø®ÄÉÀ̼ÇÀÌ ½ÃÀ۵Ǵ °÷
     * @param args - ¸í·ÉÇà ÀÎÀÚ
     */
    public static void main(String args[])
    {
        new ViewSource();
    }                  
}

nreplaceText(String, int, int)
  public void replaceText(String new_text, int start, int end);

  ¡×parameter
   ¡×new_text   ÁöÁ¤µÈ À§Ä¡¿¡ ÅؽºÆ®¸¦ ±³Ã¼ÇÒ »õ·Î¿î ÅؽºÆ®
   ¡×start        »õ·Î¿î ÅؽºÆ®¸¦ ±³Ã¼ÇÒ °÷ÀÇ ½ÃÀÛ À§Ä¡
   ¡×end               »õ·Î¿î ÅؽºÆ®¸¦ ±³Ã¼ÇÒ °÷ÀÇ ¸¶Áö¸· À§Ä¡

nopenConnection()           URL °´Ã¼¿¡ ÀÇÇØ ÂüÁ¶µÇ´Â °´Ã¼·ÎÀÇ ¿¬°áÀ» ¿¬´Ù.

ngetInputStream()
  ¡×Ŭ¶óÀ̾ðÆ® ¼ÒÄÏ¿¡ ´ëÇÑ InputStreamÀ» ¸®ÅÏ
  ¡×Ŭ¶óÀ̾ðÆ®´Â ÀÌ ½ºÆ®¸²À» »ç¿ëÇÏ¿© ¼­¹ö·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ¹Þ´Â´Ù.

  Hit : 11681     Date : 2004/12/14 11:55



    
netwow1 °­ÀÇ»ç °¡ ¿Ã·Á¿ä 2004/12/14  
netwow1 ¢Á ÀÚ¹Ù ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö ÀÔ´Ï´Ù 2004/12/14  
1401   ÀڷᱸÁ¶ °­ÁÂ_Çؽà    parkjy1917
08/31 7963
1400   ÀڷᱸÁ¶ °­ÁÂ_Æ®¸®     parkjy1917
08/31 7842
1399   ÀڷᱸÁ¶ °­ÁÂ_¸®½ºÆ®     parkjy1917
08/31 8010
1398   ÀڷᱸÁ¶ °­ÁÂ_¹è¿­     parkjy1917
08/31 8159
1397   ÀڷᱸÁ¶ °­ÁÂ_½ºÅðú Å¥     parkjy1917
08/31 8333
  ÀÚ¹Ù ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö °­Àǹè¿ì½ÇºÐ[2]     netwow1
12/14 11680
1395   ÀÚ¹Ù º¸¾È ÄÚµù °¡À̵å ÀÔ´Ï´Ù.[1]     oldlove7
12/11 8081
1394   ÀÚ¹Ù°¡»ó¸Ó½Å JVM ¸Þ¸ð¸® Á¶Á¤Çϱâ[1]     rootguy
12/05 22924
1393   ÀÚ¹Ù½ºÅ©¸³Æ® Àå³­Áú,[13]     whqkdnf000
07/31 9511
1392   ÀÚ¹Ù½ºÅ©¸³Æ®Á» ¾Ë·ÁÁֽú» ±¸ÇÕ´Ï´Ù.     ppuuv8585
06/23 5318
1391   Áú¹®3[5]     sibu02003
05/10 5611
1390 ºñ¹Ð±ÛÀÔ´Ï´Ù  Áú¹®ÇÕ´Ï´Ù~     ¸¶´©¶ó
08/05 1
1389   ÀÚ¼Ò¼­ & Áö¿ø¼­ ±âÃÊ ¹®¼­ ÀÛ¼º.[5]     lMaxl04
02/13 5919
1388   ÀÚ½ÅÀÇ LCD¸ð´ÏÅÍ È­¼Ò°¡ ºÒ·®ÀÎÁö ¾Æ´ÑÁö¸¦ ¾Ë¾Æº¸ÀÚ.     Ǫ¸¥ÇÏ´Ã
09/01 7100
1387   ÀÚ½ÅÀÇ ÄÄÇ»ÅÍ°¡ ÇØÅ·´çÇÏ°íÀÖ´ÂÁö ¾Ë¾Æº¸ÀÚ..!![24]     baekwanghee
08/03 46631
1386   ÀÛ¾÷Ç¥½ÃÁÙÀÇ ±×·ìÈ­ °¹¼ö ÁöÁ¤Çϱâ![7]     kgt2001sus
02/02 7606
1385   ÀÛ¾÷°ü¸®ÀÚÀÇ ÇÁ·Î¼¼½ºµé¿¡ °üÇؼ­[4]     idl0521
12/08 8302
1384   Àü³²/±¤ÁÖ ¿¡¼­ ½º½Â´ÔÀ̳ª °øºÎ°°ÀÌÇϽǺР±¸ÇÕ´Ï´Ù[2]     kcddu1004
01/31 8222
1383   Áö°ã°Ô µéÀº TCP/UDP Åë½Å °³³ä[2]     xodnr631
09/07 9529
1382   Áö±Ý ÅÚ³ÝÀ¸·Î ftzÁ¢¼ÓÇߴµ¥ ÇѱÛÀÌ ±úÁö³×¿ä[4]     hip
05/23 6370
[1][2][3][4][5][6][7][8][9] 10 ..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org