¼Ò¼³°°Àº ÀÚ¹Ù 4ºÎ  Á¦17Àå ¼ÒÄÏÇÁ·Î±×·¥  17.5.4 °è¼Ó  

 ±×·³ ºñ½ÁÇÑ ¿¹Á¦¸¦ Çϳª ´õ º¸°Ú½À´Ï´Ù. À§ÀÇ ¿¹Á¦¿Í ºñ½ÁÇϱ⠶§¹®¿¡ ÀÚ¼¼ÇÑ ¼³¸íÀº »ý·«Çϱâ·Î ÇϰڽÀ´Ï´Ù. ÇÑ ¹ø Á÷Á¢ ÇØº¸½Ã°í ¾î¶»°Ô ´Ù¸¥Áö ã¾Æ º¸½Ã±â ¹Ù¶ø´Ï´Ù. ÀÚ, ¿¹Á¦°¡ ³ª°©´Ï´Ù.

 

UDPServer.java(

import java.io.*;

import java.net.*;

import java.util.Date;

public class UDPServer {

   public static void main(String[] args) throws Exception {

       DatagramSocket socket = new DatagramSocket();

       InetAddress inet = InetAddress.getByName("127.0.0.1");

       int port = 20001;

       while(true){

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

          int len = dateStr.length();

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

          socket.send(packetOut);

          System.out.print(" Sending:"+dateStr);

          Thread.sleep(1000);

       }

   }

}

C:\JavaExample\17>javac UDPServer.java

C:\JavaExample\17>java UDPServer

 Sending:Wed Oct 24 20:13:20 GMT+09:00 2001

 Sending:Wed Oct 24 20:13:21 GMT+09:00 2001

 Sending:Wed Oct 24 20:13:22 GMT+09:00 2001

 Sending:Wed Oct 24 20:13:23 GMT+09:00 2001

 Sending:Wed Oct 24 20:13:24 GMT+09:00 2001

 

 ¸ÕÀú, DatagramSocket °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.

 

n        DatagramSocket socket = new DatagramSocket();

 

 ±×¸®°í DatagramPacket¿¡ ÇÊ¿äÇÑ Á¤º¸¸¦ ¸¸µì´Ï´Ù.

 

n        InetAddress inet = InetAddress.getByName("127.0.0.1");

n        int port = 20001;

 

inet ÁÖ¼Ò·Î µ¥ÀÌÅͱ׷¥À» Áö¼ÓÀûÀ¸·Î º¸³À´Ï´Ù. ´©°¡ ¹ÞµçÁö ¸»µçÁö Áö¼ÓÀûÀ¸·Î º¸³»°Ô µË´Ï´Ù. ´ÜÁö, ³Ê¹« ºü¸£°Ô º¸³»´Â °ÍÀ» ¹æÁöÇϱâ À§Çؼ­ Thread.Sleep(1000)À» »ç¿ëÇÏ¿© 1Ãʸ¶´Ù º¸³»°í ÀÖ½À´Ï´Ù. ´ÙÀ½Àº ¹«ÇÑ ·çÇÁ¸¦ µ¹¸é¼­ 1Ãʸ¶´Ù µ¥ÀÌÅͱ׷¥ ÆÐŶÀ» º¸³»´Â Á¶°¢ ÄÚµåÀÔ´Ï´Ù.

 

n        while(true){

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

n           int len = dateStr.length();

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

n           socket.send(packetOut);

n           Thread.sleep(1000);

n        }

 

 Àü¼ÛÇÒ ¶§ ÇÊ¿äÇÑ Á¤º¸¸¦ new Date().toString()À» ÀÌ¿ëÇØ¼­ ¸¸µé°Ô µÇ¸ç ¸ðµç Á¤º¸¸¦ Á¶ÇÕÇØ¼­ packetOut°´Ã¼¸¦ »ý¼ºÇÏ°í ¸¸µé¾îÁø socketÀ» ÅëÇØ¼­ Àü¼ÛÇÏ°Ô µË´Ï´Ù. ¾ÆÁÖ ´Ü¼øÇÏÁö¸¸ TCPÅë½Å°ú ´Ù¸¥Á¡À» ºÐ¸íÇÏ°Ô Áõ¸íÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ Á¸ÀçÇϵçÁö ¸»µçÁö ±×³É ƯÁ¤ÁÖ¼Ò·Î µ¥ÀÌÅ͸¦ ¹Ð¾î ³Ö°í ÀÖ½À´Ï´Ù. ´ÙÀ½À¸·Î Ŭ¶óÀÌ¾ðÆ® ¿¹Á¦¸¦ »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

UDPClient.java

import java.io.*;

import java.net.*;

import java.util.Date;

public class UDPClient {

   public static void main(String[] args) throws Exception {

       DatagramPacket packetIn=null;

       byte packetBuf[] = new byte[1024];

       DatagramSocket socket = new DatagramSocket(20001);

       while(true){

          packetIn = new DatagramPacket(packetBuf, 1024);

          socket.receive(packetIn);

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

          System.out.print("Received: " + dayTime);

       }

   }

}

C:\JavaExample\17>javac UDPClient.java

C:\JavaExample\17>java UDPClient

Received: Wed Oct 24 20:13:20 GMT+09:00 2001

Received: Wed Oct 24 20:13:21 GMT+09:00 2001

Received: Wed Oct 24 20:13:22 GMT+09:00 2001

 

Ŭ¶óÀÌ¾ðÆ®´Â ÀÚ½ÅÀÇ Æ¯Á¤Æ÷Æ®·Î µé¾î¿À´Â µ¥ÀÌÅ͸¦ DatagramSocket°ú DatagramPacketÀ» ÀÌ¿ëÇÏ¿© Áö¼ÓÀûÀ¸·Î ¹Þ¾Æ ³»°í ÀÖ½À´Ï´Ù. ¸¸¾à ÀÌ µ¥ÀÌÅ͸¦ ¹Þ°í ½ÍÁö ¾Ê´Ù¸é ÇÁ·Î±×·¥À» Á¾·áÇÏ¸é µÇ´Â °ÍÀÌÁÒ. ¸¸¾à µ¥ÀÌÅ͸¦ ¹ÞÁö ¾Ê´Â´Ù¸é µ¥ÀÌÅÍ´Â ¾î¶»°Ô µÉ±î¿ä? ƯÁ¤½Ã°£ÀÌ Áö³ª¸é ÀÚµ¿À¸·Î ¼Ò¸êÇÏ°Ô µÇ¾îÀÖ½À´Ï´Ù.

 

ÇÁ·Î±×·¥¿¡¼­ ¸ÕÀú µ¥ÀÌÅ͸¦ ¹ÞÀ» ¶§ »ç¿ëÇÒ DatagramPacketÀ» ¼±¾ðÇÏ°í µ¥ÀÌÅ͸¦ ¹ÞÀ» Àӽà Byte ¹öÆÛ¸¦ »ý¼ºÇϰí ÀÖ½À´Ï´Ù. ±×¸®°í Åë½Å¿¡ »ç¿ëÇÒ DatagramSocketÀ» »ý¼ºÇϰí ÀÖ½À´Ï´Ù.

 

n        DatagramPacket packetIn=null;

n        byte packetBuf[] = new byte[1024];     

n        DatagramSocket socket = new DatagramSocket(20001);

 

 ´ÙÀ½À¸·Î ¹«ÇÑ ·çÇÁ¸¦ µ¹¸é¼­ DatagramPacketÀ» »ý¼ºÇÏ¿© DatagramSocketÀ¸·Î ¹Þ¾Æ ì±â°í ÀÖ½À´Ï´Ù. ±×¸®°í ¹ÞÀº DatagramPakcet¿¡ Æ÷ÇԵǾî ÀÖ´Â µ¥ÀÌÅ͸¦ StringÀ¸·Î º¯È¯ÇÏ´Â ÀÛ¾÷À» ÇÏ°Ô µË´Ï´Ù.

 

n        while(true){       

n           packetIn = new DatagramPacket(packetBuf, 1024);        

n           socket.receive(packetIn);       

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

n        }

 

ÀÌÁ¦ ÇÁ·Î±×·¥À» ½ÇÇà ½ÃÄÑ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¸ÕÀú ServerÂÊÀ» ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù. ±×¸®°í Ŭ¶óÀ̾ðÆ®ÀÇ ÇÁ·Î±×·¥À» ½ÇÇà½ÃŲ´Ù¸é °è¼ÓÀûÀ¸·Î ½Ã°£ µ¥ÀÌÅ͸¦ ¹ÞÀ» ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. À§ÀÇ ¿¹Á¦¿¡¼­ ServerÂÊÀÇ IP Address¸¦ ÀÚ±âÀÇ IP Address·Î ÇÏ¿´½À´Ï´Ù. ÇÑ ¹ø ƯÁ¤ IP¸¦ °¡Áø ´Ù¸¥ ÄÄÇ»ÅÍ¿¡¼­ ¼­¹öÇÁ·Î±×·¥À» ½ÇÇà½ÃŲ ÈÄ Å×½ºÆ®¸¦ ÇØ º¸±æ ¹Ù¶ø´Ï´Ù.

 

 À§¿¡ ¼³¸íÇÑ °ÍµéÀº ÀÌÇØÇϱ⠽±µµ·Ï ¾´ ±Û ÀÔ´Ï´Ù. Á¶±Ý¸¸ ±í°Ô µé¾î°¡ º¸¸é »ó´çÇÑ ³­À̵µ¸¦ ´À³¥ ¼ö ÀÖ½À´Ï´Ù. °ü½ÉÀÌ ÀÖÀ¸½Å ºÐµéÀº Àü¹® ¼­ÀûµéÀ» ÂüÁ¶ÇÏ½Ã¸é µÉ °ÍÀÔ´Ï´Ù. ÀÌ»óÀ¸·Î UDP¿¡ ´ëÇÑ ¼³¸íµµ Á¢°Ú½À´Ï´Ù. ±×¸®°í ´ÙÀ½À¸·Î ¿©·¯ºÐÀÌ ±â´Ù¸®°í ±â´Ù¸®¼Ì´ø ÀÚ¹ÙÀÇ Á¾ÇÕ¿¹¼ú, äÆÃÀ» ±¸ÇöÇØ º¸°Ú½À´Ï´Ù.



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