¼Ò¼³°°Àº ÀÚ¹Ù 4ºÎ  Á¦17Àå ¼ÒÄÏÇÁ·Î±×·¥  17.5.4 µ¥ÀÌÅͱ׷¥ Ŭ¶óÀÌ¾ðÆ®  

 

     17.5.4 µ¥ÀÌÅͱ׷¥ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ ÀÛ¼º

 

 ±×·³ µ¥ÀÌÅͱ׷¥ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À» ó¸®ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸±â·Î ÇϰڽÀ´Ï´Ù. ¿ì¼± ¿ª½Ã DatagramSocketÀÇ ¼ÒÄÏ °´Ã¼¸¦ »ý¼ºÇÏ¿©¾ß ÇÕ´Ï´Ù. ±× ´ÙÀ½¿¡´Â ÆÐŶÀ» »ý¼ºÇÏ¿©¾ß ÇÕ´Ï´Ù. À̹ø¿¡´Â ÆÐŶÀ» Àü¼Û¿ëÀ¸·Î ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ±×¸®°í ¸¸µç ÆÐŶÀ» ¸ñÀûµÈ ÁÖ¼Ò·Î º¸³À´Ï´Ù. ÀÌ ¶§´Â send()¸Þ¼­µå¸¦ »ç¿ëÇÕ´Ï´Ù. UDPÆÐŶÀº Àü¼Û Áß »ç¶óÁú ¼öµµ ÀÖ°í, µÚÀÇ ÀÚ·á°¡ ¸ÕÀú µé¾î °¥ ¼öµµ Àֱ⠶§¹®¿¡ Àü¼ÛÇÏ´Â ÂÊÀÇ IP Address¿Í Port¹øÈ£´Â Çì´õ¿¡ ÀÚµ¿À¸·Î ºÙ¾î¼­ °°ÀÌ Àü¼ÛÀÌ µË´Ï´Ù. ÀÌ·¸°Ô Àü¼ÛµÈ ÆÐŶÀº ¼­¹ö¿¡ µµ´ÞÇϸé ÀÀ´ä µ¥ÀÌÅͱ׷¥ ÆÐŶÀ» »ý¼ºÇÏ¿© ´Ù½Ã Ŭ¶óÀÌ¾ðÆ®·Î º¸³»°Ô µÈ´Ù. Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥Àº ³»¿ëÀ» ó¸®ÇÏ°í ¼ÒÄÏÀ» ´Ý¾ÆÁÝ´Ï´Ù. º°·Î ¾î·Á¿î ¾ê±â´Â ¾Æ´Õ´Ï´Ù. ¹°·Ð ±í°Ô µé¾î°¡¸é ¾î·ÆÁÒ.

 

¢Ñ

µ¥ÀÌÅͱ׷¥ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ ó¸® °úÁ¤

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

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

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

4.        ÀÀ´ä ³»¿ë ó¸® ¹× ¼ÒÄÏ ´Ý±â

 

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

 

UdpDayTimeClientTest.java

import java.io.*;

import java.net.*;

public class UdpDayTimeClientTest {

   public static void main(String[] args) {

       DatagramSocket socket=null;

       DatagramPacket packetOut=null, packetIn=null;

       byte packetBuf[] = new byte[1024];

       InetAddress serverInet;

      if(args.length < 1) {

        System.out.println("Á¢¼ÓÇÒ ¼­¹öÀÇ È£½ºÆ® À̸§À̳ª IP Address¸¦ ÀÔ·ÂÇϼ¼¿ä.");

        System.exit(1);

     }

       try {

          socket = new DatagramSocket();

        serverInet = InetAddress.getByName(args[0]);

        packetOut = new DatagramPacket(packetBuf, 2, serverInet, 3000);

        packetIn = new DatagramPacket(packetBuf, 1024);

        socket.send(packetOut);

        socket.receive(packetIn);

          String dayTime = new String(packetIn.getData(),0, packetIn.getLength());

          System.out.println("DayTime: " + dayTime);

          socket.close();

       } catch(IOException e){

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

       }

       }

}

C:\JavaExample\17>javac UdpDayTimeClientTest.java

C:\JavaExample\17>java UdpDayTimeClientTest localhost

DayTime: Thu Oct 18 14:26:50 GMT+09:00 2001

 

C:\JavaExample\17>java UdpDayTimeClientTest 127.0.0.1

DayTime: Thu Oct 18 14:27:10 GMT+09:00 2001

 

 ±×·³ À§ÀÇ ¿¹Á¦¸¦ ¼³¸íÇϸ鼭 ´Ù½Ã ¸»¾¸ µå¸®°Ú½À´Ï´Ù. À§ÀÇ ¿¹Á¦ ÇÁ·Î±×·¥À» ½ÇÇà ½Ãų ¶§¿¡´Â µÚ¿¡ Àü¼ÛµÉ ¼­¹öÀÇ È£½ºÆ® À̸§À̳ª IP Address¸¦ ÀÔ·ÂÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ÀÔ·ÂÀÌ ¾ÈµÇ¸é ÇÁ·Î±×·¥ÀÌ Á¾·á°¡ µË´Ï´Ù.

 

n        if(args.length < 1) {

n           System.out.println("Á¢¼ÓÇÒ ¼­¹öÀÇ È£½ºÆ® À̸§À̳ª IP Address¸¦ ÀÔ·ÂÇϼ¼¿ä.");

n           System.exit(1);

n        }

 

 ¿¹Á¦¿¡¼­´Â ÇÑ ´ëÀÇ ÄÄÇ»ÅÍ¿¡ ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®¸¦ ±¸ÇöÇ߱⠶§¹®¿¡ ¡°localhost¡± ¿Í ¡°127.0.0.1¡±À» »ç¿ëÇÏ¿´½À´Ï´Ù. ´ÙÀ½¿¡ Àü¼Û¿¡ ¾²¿©Áú ¼ÒÄÏÀ» »ý¼ºÇÏ¿©¾ß ÇÕ´Ï´Ù. ¼ÒÄÏÀ» »ý¼ºÇغ¸ÁÒ.

 

n        DatagramSocket socket = new DatagramSocket();

 

 À§ÀÇ ±¸¹®À» ÅëÇØ µ¥ÀÌÅͱ׷¥ ¼ÒÄÏ »ý¼º°ú ¼ÒÄÏ ¿¬°áÀÌ ÇÔ²² ÀÌ·ç¾îÁ³½À´Ï´Ù. Port¹øÈ£¸¦ ÁÖÁö ¾ÊÀº °ÍÀº ¿î¿µÃ¼Á¦°¡ ÀÓÀÇ·Î Port¸¦ Á¤ÇØÁÖµµ·Ï Çϱâ À§ÇÔÀÔ´Ï´Ù. ¿©±â¼­ÀÇ Port´Â Ŭ¶óÀÌ¾ðÆ®¿¡¼­ »ç¿ë ÇÒ Port¹øÈ£ÀÔ´Ï´Ù. ¼­¹ö ÇÁ·Î±×·¥ÀÇ Port¹øÈ£ 3000°ú Çò°¥¸®¸é ¾ÈµÇ°ÚÁÒ.

 

n        InetAddress serverInet = InetAddress.getByName(args[0]);

 

 »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ¼­¹öÀÇ È£½ºÆ® À̸§À̳ª IP Address¸¦ ¹Þ¾Æ¿À´Â ±¸¹®ÀÔ´Ï´Ù. ¸Å°³º¯¼ö·Î ¾²¿©Áú °ªÀÔ´Ï´Ù.

 

n        DatagramPacket packetOut = new DatagramPacket(packetBuf,2,serverInet,3000);

 

 µåµð¾î ÆÐŶÀ» »ý¼ºÇÏ¿´½À´Ï´Ù. ¿©±â¼­ »ý¼ºµÈ ÆÐŶÀº Àü¼Û¿ë ÆÐŶÀÔ´Ï´Ù. ¸Å°³º¯¼ö·Î µ¥ÀÌÅÍ, µ¥ÀÌÅÍÀÇ ±æÀÌ, ¼­¹öÀÇ ÁÖ¼Ò¿Í Port¹øÈ£°¡ »ç¿ëµÇ¾ú½À´Ï´Ù.

 

n        DatagramPacket packetIn = new DatagramPacket(packetBuf, 1024);

 

 ÀÌ ¹ø¿¡´Â ¼­¹ö¿¡¼­ º¸³»ÁÙ ÆÐŶÀ» ¹Þ¾Æ³¾ ÆÐŶÀ» »ý¼ºÇÏ¿´½À´Ï´Ù. ¼ö½Å¿ë ÆÐŶÀÌÁÒ. Àü¼Û¿ë ÆÐŶÀ» »ý¼ºÇÒ ¶§¿Í ¸Å°³º¯¼ö°¡ ´Ù¸£Áö ¾Ê½À´Ï±î? ±â¾ï ÇÏ¼Å¾ß ÇÕ´Ï´Ù. À§ÀÇ ±¸¹®ÀÇ ¸Å°³º¯¼ö¸¦ º¸¸é µ¹¾Æ¿Ã µ¥ÀÌÅÍ¿Í ±× Å©±â¸¦ ÁöÁ¤ÇØ ÁÖ¾ú½À´Ï´Ù. ÀÌÁ¦ ´Ù ¸¸µé¾úÀ¸´Ï ÆÐŶÀ» º¸³»¾ß °ÚÁÒ.

 

n        socket.send(packetOut);

n        socket.receive(packetIn);

 

 DatagramPacketŬ·¡½ºÀÇ ¸â¹ö¸Þ¼­µåÀÎ send()¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© ÆÐŶÀ» ¼­¹ö·Î º¸³Â½À´Ï ´Ù. º¸³½ ÆÐŶÀÌ ¼­¹ö¿¡ µµÂøÇÏ¸é ¼­¹ö´Â Ŭ¶óÀÌ¾ðÆ®·Î ÆÐŶÀ» º¸³»°Ô µÇ¾îÀÖ½À´Ï´Ù. º¸³»¿Â ÆÐŶÀº receive()¸Þ¼­µå¸¦ ÅëÇØ ¹Þ¾Æ³½ ÈÄ ¾Æ±î »ý¼ºÇÑ ¼ö½Å¿ë ÆÐŶ¿¡ º¹»ç¸¦ ÇÏ°Ô µË´Ï´Ù. ±×·± ÈÄ¿¡ ÆÐŶÀÇ Á¤º¸¸¦ ÀÐ¾î ¿À¸é µÇ´Â °ÍÀÔ´Ï´Ù.



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