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

 

17.2 Echo ÇÁ·Î±×·¥

 

 

SocketÀ» ÀÌ¿ëÇÏ¿© EchoÇÁ·Î±×·¥À» Å×½ºÆ®ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ÀϹÝÀûÀÎ ³×Æ®¿öÅ© ¼­¹öµé¿¡°Ô 7¹ø Port¸¦ ÀÌ¿ëÇÏ¿© SocketÀ¸·Î Á¢¼ÓÇÑ ÈÄ µ¥ÀÌÅ͸¦ º¸³»¸é, ±× µ¥ÀÌÅ͸¦ ´Ù½Ã ¿ªÀ¸·Î µÇµ¹·Á º¸³»´Â ÇÁ·Î±×·¥ÀÌ µ¿ÀÛÇϵµ·Ï µÇ¾î ÀÖ½À´Ï´Ù. ¹°·Ð, ¼­¹ö°ü¸®ÀÚ°¡ ÀÌ ºÎºÐÀ» ¸·¾Æ ¹ö¸°´Ù¸é ¹®Á¦°¡ µÇ°ÚÁö¸¸ ±×·¸Áö ¾ÊÀº °æ¿ì ÀÏ¹Ý ½Ã½ºÅÛ¿¡¼­´Â ÀÌ·¯ÇÑ ±â´ÉÀ» Çã¿ëÇϰí ÀÖ½À´Ï´Ù. ±× ¿¹¸¦ Å×½ºÆ® ÇØº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

EchoPortTest.java(Echo Port¸¦ Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦

import java.io.*;

import java.net.*;

public class EchoPortTest {  

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

       String temp;

       BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

       Socket socket = new Socket("www.snu.ac.kr", 7);

      BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

     PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);

      System.out.print("\nInput Echo:");

       while((temp = stdin.readLine()) != null) {

        pw.println(temp);

        System.out.print("echo: " + br.readLine() +"\nInput Echo:");

     }

       br.close();

       pw.close();

       socket.close();

   }

}

C:\JavaExample\17>javac EchoPortTest.java

C:\JavaExample\17>java EchoPortTest

Input Echo:º¸¼®ÀÚ¹Ù

echo: º¸¼®ÀÚ¹Ù

Input Echo:www.jabook.org

echo: www.jabook.org

Input Echo:

 

µ¥ÀÌÅ͸¦ µµ½º(¸í·ÉÇÁ·ÒÇÁÆ®)âÀ¸·Î ¹Þ¾Æ µéÀ̱â À§ÇÏ¿© Ç¥ÁØ ÀÔ·Â ½ºÆ®¸²À» »ý¼ºÇÕ´Ï´Ù.

 

n        BufferedReader stdin = new BufferedReader(new InputStreamReader (System.in));

 

 System.outÀÇ ¹Ý´ëµÇ´Â °³³äÀÎ System.inÀº Űº¸µå¿¡ ¿¬°áµÈ Ç¥ÁØÀԷ½ºÆ®¸²ÀÔ´Ï´Ù. ±×·³ ´ç¿¬È÷ System.outÀº ¸ð´ÏÅÍ·Î Ãâ·ÂÀ» Çϴ ǥÁØÃâ·Â½ºÆ®¸²À̰ÚÁÒ? ÀÌÁ¦ Ç¥ÁØÀԷ½ºÆ®¸²À» »ý¼ºÇßÀ¸´Ï  ƯÁ¤ ¼­¹öÀÇ È£½ºÆ® À̸§°ú Port¸¦ ÀÌ¿ëÇÏ¿© ¼ÒÄÏÀ» »ý¼ºÇÕ´Ï´Ù.

 

n        Socket socket = new Socket("www.snu.ac.kr", 7);

 

 È£½ºÆ®À̸§°ú Port¸¦ ¸Å°³º¯¼ö·Î ÇÏ¿© ¼ÒÄÏÀ» »ý¼ºÇÏ´Â ¼ø°£ ÀÌ¹Ì ¿¬°áÀº µÈ °ÍÀÔ´Ï´Ù. ¸¸¾à ¼ÒÄÏ»ý¼º¿¡ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù¸é ´ç¿¬È÷ ¿¬°á»óÀÇ ¿¡·¯°¡ ³­ °ÍÀ̰ÚÁÒ. ´ÙÀ½À¸·Î »ý¼ºµÈ ¼ÒÄÏ °´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ½ºÆ®¸²À» »ý¼ºÇÕ´Ï´Ù. ¼ÒÄÏÀº ¿¬°á¼³Á¤À» ÇØ µÎ´Â °ÍÀÌ¸ç ½ÇÁúÀûÀÎ ÀÏÀº ½ºÆ®¸²ÀÌ ÇØ°áÇÕ´Ï´Ù. ½ºÆ®¸²À» µ¥ÀÌÅ͸¦ º¸³»°í µ¥ÀÌÅ͸¦ ¹Þ±â À§Çؼ­ Ãâ·Â°ú ÀÔ·Â ½ºÆ®¸² 2°³¸¦ »ý¼ºÇÕ´Ï´Ù.

 

n        BufferedReader br = new BufferedReader(new InputStreamReader ( socket.getInputStream()));

n        PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);

 

ÀÌÁ¦ µ¥ÀÌÅ͸¦ º¸³»°í ¹Þ±â¸¸ ÇÏ¸é µË´Ï´Ù. ½ºÆ®¸²±îÁö »ý¼ºÇߴµ¥ ¿¡·¯°¡ ³ªÁö ¾Ê¾Ò´Ù¸é ¼ÒÄÏÀÇ »ý¼º°ú µ¥ÀÌÅ͸¦ º¸³»°í ¹ÞÀ» Áغñ°¡ µÇ¾ú´Ù´Â °ÍÀÔ´Ï´Ù. ±× ´ÙÀ½Àº while¹®À» µ¹¸é¼­ Űº¸µå ÀÔ·ÂÀ» ¹Þ°í EnterÄ¡´Â ¼ø°£ µ¥ÀÌÅ͸¦ º¸³»°í µÇµ¹¾Æ¿Â µ¥ÀÌÅ͸¦ ¹Þ´Â ºÎºÐÀÔ´Ï´Ù.

 

n        while((temp = stdin.readLine()) != null) {

n           pw.println(temp);

n           System.out.print("echo: " + br.readLine() +"\nInput Echo:");   

n        }

 

stdin.readLine()¸Þ¼­µå·Î µ¥ÀÌÅ͸¦ Àо temp¿¡ º¸°üÇÕ´Ï´Ù. ±×¸®°í Ãâ·Â½ºÆ®¸²ÀÎ pw¸¦ ÅëÇØ¼­ µ¥ÀÌÅ͸¦ Àü¼ÛÇÕ´Ï´Ù. Àü¼ÛÇÑ ÈÄ ¹Ù·Î ÀԷ½ºÆ®¸² brÀ» ÀÌ¿ëÇØ¼­ µ¥ÀÌÅ͸¦ Àо°í ÀÖ½À´Ï´Ù.

 

n        pw.println(temp) à ¼ÒÄÏÀÇ Ãâ·Â½ºÆ®¸²À¸·Î µ¥ÀÌÅÍ Àü¼Û

n        br.readLine() à ¼ÒÄÏÀÇ ÀԷ½ºÆ®¸²À¸·Î µ¥ÀÌÅÍ Àо

 

 ¿©±â±îÁö ¿¹Á¦¿¡ ´ëÇÑ ¸ðµç ³»¿ëÀ» ÀÌÇØÇϼ̴ٸé Á÷Á¢ Å×½ºÆ®ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. ±×¸®°í ¼­¹ö¿¡¼­ EchoÇÁ·Î±×·¥ÀÌ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù¸é ½Ã½ºÅÛ ¿î¿µÀÚ¿¡°Ô EchoÇÁ·Î±×·¥ÀÌ ÀÛµ¿ÇÏ´ÂÁö ¹®ÀǸ¦ ÇϽñ⠹ٶø´Ï´Ù. ¿î¿µÀÚ°¡ ¸·¾Æ µÑ ¼öµµ Àֱ⠶§¹®¿¡ ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö µµ ÀÖ½À´Ï´Ù. ±×¸®°í EchoÀÇ ±âº» Port´Â ÀϹÝÀûÀ¸·Î 7¹øÀÎ °ÍÀ» ¾Ë¾Æ µÎ½Ã±â ¹Ù¶ø´Ï´Ù. ´ÙÀ½À¸·Î ½Ã°£À» ¾Ë¾Æ º¸´Â DayTimeÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

Socket »ý¼ºÀÚ¸Þ¼­µå

protected  Socket() : ½Ã½ºÅÛ ±âº» À¯Çü SocketImpl·Î ¿¬°áµÇÁö ¾ÊÀº ¼ÒÄÏÀ» ÀÛ¼ºÇÑ´Ù.

public  Socket(InetAddress address, int port) : ½ºÆ®¸² ¼ÒÄÏÀ» ÀÛ¼ºÇÏ¿© ÁöÁ¤µÈ IP ÁÖ¼ÒÀÇ ÁöÁ¤µÈ Port¹øÈ£·Î ¿¬°áÇÑ´Ù.

public  Socket(InetAddress host, int port, boolean stream) : ¼ÒÄÏÀ» ÀÛ¼ºÇÏ¿© ÁöÁ¤µÈ IP ÁÖ¼ÒÀÇ ÁöÁ¤µÈ Port¹øÈ£·Î ¿¬°áÇÕ´Ï´Ù. ±×·¯³ª ÇöÀç´Â Áö¿øµÇÁö ¾Ê´Â´Ù.

public  Socket(InetAddress address, int port, InetAddress localAddr, int localPort) : ¼ÒÄÏÀ» ÀÛ¼ºÇÏ¿© ÁöÁ¤µÈ ¿ø°Ý PortÀÇ ÁöÁ¤µÈ ¿ø°Ý ÁÖ¼Ò·Î ¿¬°áÇÑ´Ù.

protected  Socket(SocketImpl impl) : »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ SocketImpl·Î ¿¬°áµÇÁö ¾ÊÀº ¼ÒÄÏÀ» ÀÛ¼ºÇÑ´Ù.

public  Socket(String host, int port) : ½ºÆ®¸² ¼ÒÄÏÀ» ÀÛ¼ºÇÏ¿© ¸í¸íµÈ È£½ºÆ®ÀÇ ÁöÁ¤µÈ Port·Î ¿¬°áÇÑ´Ù.

public  Socket(String host, int port, boolean stream) : ½ºÆ®¸² ¼ÒÄÏÀ» ÀÛ¼ºÇÏ¿© ¸í¸íµÈ È£½ºÆ®ÀÇ ÁöÁ¤µÈ Port·Î ¿¬°áÇÕ´Ï´Ù. ±×·¯³ª ÇöÀç´Â Áö¿øµÇÁö ¾Ê´Â´Ù.

public  Socket(String host, int port, InetAddress localAddr, int localPort) : ¼ÒÄÏÀ» ÀÛ¼ºÇÏ¿© ÁöÁ¤µÈ ¿ø°Ý PortÀÇ ÁöÁ¤µÈ ¿ø°Ý È£½ºÆ®·Î ¿¬°áÇÑ´Ù.

 

Socket ÁÖ¿ä ¸â¹ö¸Þ¼­µå

public void close() : ¼ÒÄÏÀ» ´Ý´Â´Ù.

public InetAddress getInetAddress() : ¼ÒÄÏÀÌ ¿¬°áµÈ ÁÖ¼Ò¸¦ ¸®ÅÏÇÑ´Ù.

public InputStream getInputStream() : ¼ÒÄÏ¿¡ ´ëÇÑ ÀÔ·Â ½ºÆ®¸²À» ¸®ÅÏÇÑ´Ù.

public InetAddress getLocalAddress() : ¼ÒÄÏÀÌ ¹ÙÀεåµÈ ±¹Áö ÁÖ¼Ò¸¦ °¡Á®¿Â´Ù.

public int getLocalPort() : ¼ÒÄÏÀÌ ¹ÙÀεåµÈ ±¹Áö Port¸¦ ¸®ÅÏÇÑ´Ù.

public OutputStream getOutputStream() : ¼ÒÄÏ¿¡ ´ëÇÑ Ãâ·Â ½ºÆ®¸²À» ¸®ÅÏÇÑ´Ù.

public int getPort() : ¼ÒÄÏÀÌ ¿¬°áµÈ ¿ø°Ý Port¸¦ ¸®ÅÏÇÑ´Ù.

public int getSoLinger() : SO_LINGER¿¡ ´ëÇÑ ¼³Á¤À» ¸®ÅÏÇÑ´Ù.

public int getSoTimeout() :  SO_TIMEOUT¿¡ ´ëÇÑ ¼³Á¤À» ¸®ÅÏÇÑ´Ù.

public boolean getTcpNoDelay() : TCP_NODELAY°¡ »ç¿ë °¡´ÉÇÑÁö ¿©ºÎ¸¦ Å×½ºÆ®ÇÑ´Ù.

public static void setSocketImplFactory(SocketImplFactory fac) : ÀÀ¿ëÇÁ·Î±×·¥¿¡ ´ëÇÑ Å¬¶óÀÌ¾ðÆ® ¼ÒÄÏ ±¸Çö ÆÑÅ丮¸¦ ¼³Á¤ÇÑ´Ù.

public void setSoLinger(boolean on, int linger) :  ÁöÁ¤µÈ ½Ã°£ µ¿¾È SO_LINGER¸¦ »ç¿ë °¡´É/»ç¿ë ºÒ°¡´ÉÇÏ°Ô ÇÑ´Ù.

public void setSoTimeout(int timeout) : ÁöÁ¤µÈ ½Ã°£ Á¾·á°ª(¹Ð¸®ÃÊ ´ÜÀ§)À¸·Î SO_TIMEOUTÀ» »ç¿ë °¡´É/»ç¿ë ºÒ°¡´ÉÇÏ°Ô ÇÑ´Ù.

public void setTcpNoDelay(boolean on) : TCP_NODELAYÀ» »ç¿ë °¡´É/»ç¿ë ºÒ°¡´ÉÇÏ°Ô ÇÑ´Ù(NagleÀÇ ¾Ë°í¸®Áò »ç¿ë °¡´É/»ç¿ë ºÒ°¡´É).

public String toString() : ¼ÒÄÏÀ» StringÀ¸·Î º¯È¯ÇÑ´Ù.



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