±×·³ ÆÐŶÀ» ¹Þ¾Æ³»´Â ÇÁ·Î±×·¥ºÎÅÍ ½ÃÀÛÇØ º¸°Ú½À´Ï´Ù. Á¦ÀÏ Ã³À½À¸·Î ÇØ¾ß ÇÏ´Â ÀÏÀº ¼³Á¤µÈ 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ºÎ ÀúÀÚ:ÃÖ¿µ°ü |