¼Ò¼³°°Àº ÀÚ¹Ù 4ºÎ  Á¦17Àå ¼ÒÄÏÇÁ·Î±×·¥  17.5.3 µ¥ÀÌÅͱ׷¥ ¼­¹ö ÇÁ·Î±×·¥ ÀÛ¼º  

 

     17.5.3 µ¥ÀÌÅͱ׷¥ ¼­¹ö ÇÁ·Î±×·¥ ÀÛ¼º

 

 ±×·³ ÆÐŶÀ» ¹Þ¾Æ³»´Â ÇÁ·Î±×·¥ºÎÅÍ ½ÃÀÛÇØ º¸°Ú½À´Ï´Ù. Á¦ÀÏ Ã³À½À¸·Î ÇØ¾ß ÇÏ´Â ÀÏÀº ¼³Á¤µÈ Port¿¡¼­ µ¿ÀÛÇÏ´Â DatagramSocketÀÇ ¼ÒÄϰ´Ã¼¸¦ »ý¼ºÇØ ³»´Â °ÍÀÔ´Ï´Ù. ±× ´ÙÀ½Àº µ¥ÀÌÅ͸¦ ´ã¾Æ¼­ ³¯¾Æ°¥ ÆÐŶÀ» »ý¼ºÇÏ´Â °úÁ¤ÀÔ´Ï´Ù. ÆÐŶÀÇ »ý¼ºÀÚ¸Þ¼­µå´Â Àü¼ÛÇÒ ¶§ »ç¿ëÇÏ´Â °Í°ú ¼ö½ÅÇÒ ¶§ »ç¿ëÇÏ´Â °ÍÀÌ ÀÖ½À´Ï´Ù. ¿©±â¿¡¼­ »ç¿ëµÇ´Â °ÍÀº ¸ÕÀú ¼ö½Å¿ë ÆÐŶÀ» »ý¼ºÇÒ »ý¼ºÀÚ¸Þ¼­µå¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. »ý¼ºµÈ ¼ÒÄϰ´Ã¼¸¦ »ç¿ëÇÏ¿© receive()¸Þ¼­µå¸¦ È£ÃâÇÏ¿© ³¯¶ó¿À´Â ÆÐŶÀ» ¹Þ¾Æ³»¾î ÆÐŶÀ» º¹»çÇÕ´Ï´Ù. º¹»çµÈ ÆÐŶ¿¡¼­ µ¥ÀÌÅÍÀÇ Å©±â, Port¹øÈ£, IP Address¸¦ ¾ò¾î³À´Ï´Ù. ÀÌ·¸°Ô ¾ò¾î³½ °ªµéÀº Àü¼Û¿ë ÆÐŶÀ» ¸¸µé ¶§ »ý¼ºÀÚ¸Þ¼­µåÀÇ ¸Å°³º¯¼ö·Î »ç¿ëµÇ°í, Àü¼ÛÀ» À§ÇÑ ÆÐŶÀÌ »ý¼ºµË´Ï´Ù. ÀÌ ÆÐŶÀ» ¼ÒÄÏ¿¡ ´ã¾Æ µ¥ÀÌÅ͸¦ ¿ä±¸ÇÑ Å¬¶óÀÌ¾ðÆ®·Î º¸³»°Ô µË´Ï´Ù.

 

¢Ñ µ¥ÀÌÅͱ׷¥ ¼­¹ö ÇÁ·Î±×·¥ ó¸® °úÁ¤

1.        µ¥ÀÌÅͱ׷¥ ¼ÒÄÏ »ý¼º ¹× ¿¬°á

2.        ÀÔ·Â µ¥ÀÌÅͱ׷¥ ÆÐŶ »ý¼º ¹× ¹Þ±â(¿äû ¹Þ±â)

3.        ÀÀ´ä ³»¿ë ó¸®

4.        Ãâ·Â µ¥ÀÌÅͱ׷¥ ÆÐŶ »ý¼º ¹× º¸³»±â

 

 ´ÙÀ½ ¿¹´Â µ¥ÀÌÅͱ׷¥ ¼­¹ö ÇÁ·Î±×·¥À» ó¸® °úÁ¤À» º¸¿©ÁÖ°í ÀÖ½À´Ï´Ù.

 

UdpDayTimeServerTest.java

import java.io.*;

import java.net.*;

import java.util.Date;

import java.text.*;

public class UdpDayTimeServerTest {

   public static void main(String[] args) {

       DatagramSocket socket=null;

       DatagramPacket packetOut=null, packetIn=null;

       byte packetBuf[] = new byte[1024];

       String dateString=null;

       try {

          socket = new DatagramSocket(3000);

        for(;;) {

          packetIn = new DatagramPacket(packetBuf, 1024);

          socket.receive(packetIn);

          dateString = new String(new Date().toString()+"\r\n");

             int len = dateString.length();

             int port = packetIn.getPort();

             InetAddress inet = packetIn.getAddress();

             packetOut = new DatagramPacket(dateString.getBytes(), len, inet, port);

             socket.send(packetOut);

             System.out.println("Sending: " + new Date());

          }

       } catch(IOException e){

          System.out.println("Failure: "+e);

       }

   }

}

C:\JavaExample\17>javac UdpDayTimeServerTest.java

C:\JavaExample\17>java UdpDayTimeServerTest

 

Sending: Thu Oct 18 14:24:05 GMT+09:00 2001

Sending: Thu Oct 18 14:24:19 GMT+09:00 2001

 

 À§ÀÇ ¼­¹ö ¿¹Á¦´Â Ŭ¶óÀ̾ðÆ®ÀÇ ÆÐŶµéÀÌ Á¢¼ÓÇϱ⸦ ±â´Ù¸®´Ù Á¢¼ÓÇÏ°Ô µÇ¸é Á¢¼ÓÇÑ ½Ã°£À» ¸®ÅÏ ÇØÁÖ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. Port¸¦ 3000À¸·Î »ç¿ëÇÏ¿´°í, ÀÌ ¹ø¿¡´Â for¹®À» ÀÌ¿ëÇÑ ¹«ÇÑ·çÇÁ¸¦ µ¹·Á¼­ Ŭ¶óÀÌ¾ðÆ® ÂÊÀÇ ÆÐŶµéÀ» ±â´Ù¸®°í ÀÖ½À´Ï´Ù.

 

ù ¹øÂ° ±¸¹®(socket = new DatagramSocket(3000);)À» ÅëÇØ ÁÖ¾îÁø Port¿¡ µ¥ÀÌÅͱ׷¥ ¼ÒÄÏ »ý¼º°ú ¼ÒÄÏ ¿¬°áÀÌ ÇÔ²² ÀÌ·ç¾îÁ³½À´Ï´Ù.  ±×¸®°í (packetIn = new DatagramPacket(packetBuf, 1024))¿¡¼­´Â Ŭ¶óÀÌ¾ðÆ®°¡ º¸³½ ¿äû ³»¿ëÀ» ÀúÀåÇÒ ÀÔ·Â µ¥ÀÌÅͱ׷¥ ÆÐŶÀ» »ý¼ºÇÏ¿´½À´Ï´Ù. ±×·± ÈÄ ÀÌ¹Ì ¸¶·ÃÇÑ µ¥ÀÌÅͱ׷¥ ¼ÒÄÏ(socket)À» ÅëÇØ ÀÔ·Â µ¥ÀÌÅͱ׷¥ ÆÐŶ(packet)À» ¹Þ±â À§ÇØ socket.receive(packetIn)À» »ç¿ëÇß½À´Ï´Ù.

 

n        DatagramSocket socket = new DatagramSocket(3000);

n           for(;;) {

n             packetIn = new DatagramPacket(packetBuf, 1024);

n              socket.receive(packetIn);

n          }

 

 µé¾î¿Â ÆÐŶÀ» º¹»çÇÑ ÈÄ ÀÌ º¹»çÇÑ ÆÐŶ¿¡¼­ Á¤º¸ °ªÀ» ¾ò¾î³À´Ï´Ù. ´Ù½Ã Ŭ¶óÀÌ¾ðÆ® ÂÊÀ¸·Î º¸³¾ ¶§ »ç¿ëÇϱâ À§ÇÔÀÌÁÒ.

 

n        dateString = new String(new Date().toString()+"\r\n");

n        int len = dateString.length();

n        int port = packetIn.getPort();

n        InetAddress inet = packetIn.getAddress();

 

À§¿¡¼­ ¾òÀº ÀÌ °ªµéÀ» ¸Å°³º¯¼ö·Î »ç¿ëÇÏ¿© Àü¼Û¿ë ÆÐŶÀ» ¸¸µì´Ï´Ù.

 

n        packetOut = new DatagramPacket(dateString.getBytes(), len, inet, port);

 

 Àü¼Û¿ë ÆÐŶÀ» Ŭ¶óÀÌ¾ðÆ®·Î º¸³À´Ï´Ù.

 

n        socket.send(packetOut);

 

 ÀÌ·¸°Ô ÇØ¼­ ¼­¹ö ÂÊÀÇ ÇÁ·Î±×·¥Àº ÇÒ ÀÏÀ» ¸¶Ä¡°í ´Ù½Ã ÆÐŶÀ» ´ë±âÇÏ´Â »óŰ¡ µË´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ
ÀúÀÚ:ÃÖ¿µ°ü