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ºÎ ÀúÀÚ:ÃÖ¿µ°ü |