JAVA > LIBRARY > Java ¼ÒÄÏÅë½Å¿¹Á¦
 
JAVA
Library
Tip&Tech
Q&A
java°ø½Ä»çÀÌÆ®
Java  Platform Standard Edition 6 ÀÇ API ½ºÆå
LIBRARY
  HOME > JAVA > LIBRARY
 
Java ¼ÒÄÏÅë½Å¿¹Á¦
ÀÛ¼ºÀÏ : 10-02-04
Á¶È¸ : 13,354  

Stream°ú Socket

ÀÛ¼ºÀÚ: realmove / ÀÛ¼ºÀÏ: 2000.5.4 / ´ë»ó: ÀÚ¹Ù ±âÃÊ

 

Â÷·Ê

1. Stream

1) Stream À̶õ?

2) Stream ÀÔ·Â

3) StreamÀÇ »ç¿ë

2. Socket

1) Socket À̶õ?

2) Project1: ¼­¹ö / Ŭ¶óÀ̾ðÆ®

¼­¹ö
Ŭ¶óÀ̾ðÆ®
µ¥ÀÌÅÍ Àü¼Û°ú ¼ö½Å
¿¹¿Ü»óȲ ó¸®
Design & Coding
3) Project2: °è»ê±â

ProtocolÀÇ Á¤ÀÇ
Class ¼³°è 1: Client
Class ±¸Çö 1: Client
Class ¼³°è 2: Server
Class ±¸Çö 2: Data Àü¼Û
Class ±¸Çö 3: Client monitoring
Âü°í ¿¹Á¦
4) Project3: äÆÃ ÇÁ·Î±×·¥

ÇÁ·ÎÅäÄÝ Á¤ÀÇ
¼­¹ö ¼³°è1: ¼ÒÄÏ Áغñ¿Í Thread¸®½ºÆ® ¸¸µé±â
¼­¹ö ¼³°è2: ¸®½ºÆ®¸¦ ÀÌ¿ëÇÏ¿© ¸ðµç thread¿¡ ¸Þ½ÃÁö Àü¼ÛÇϱâ
¼­¹ö ¼³°è3: ServerThread±¸Çö
Ŭ¶óÀ̾ðÆ®1: ¼ÒÄÏ ¿¬°á, ¸Þ½ÃÁö Àü¼Û
Ŭ¶óÀ̾ðÆ®2: ¸Þ½ÃÁö ¹Þ±â
Âü°í ¿¹Á¦


--------------------------------------------------------------------------------

Stream for Data Transmision
1. ½ºÆ®¸²À̶õ?

stream

n.
1 °³¿ï(brook), ½Ã³», °­(river).
a mountain stream °è·ù(Í¢êü).
2 È帧, ¼ö·ù, ºÐ·ù(ÝÆêü); ÇØ·ù; ±â·ù; ±¤¼±. FLOW ×¾åÞ
the Gulf Stream ¸ß½ÃÄÚ ¸¸·ù
a stream of tears È帣´Â ´«¹°
down (up) [the] stream ÇÏ·ù(»ó·ù)¿¡(·Î).
3 ºñÀ¯Àû [¶§»ç»ó µûÀ§ÀÇ] È帧, °æÇâ, Çü¼¼(trend); »çÁ¶.
the stream of history ¿ª»çÀÇ È帧
the stream of thought »çÁ¶.
4 ¿¬¼ÓµÇ´Â °Í, ²÷ÀÓ¾øÀÌ À̾îÁö´Â °Í(»ç¶÷); ¼âµµ.
a stream of talk ±×Ä¥ ÁÙ ¸ð¸£´Â À̾߱â.
5 ÄÄÇ»ÅÍ ½ºÆ®¸² [µ¥ÀÌÅÍÀÇ È帧].

dic.naver.com¿¡¼­ ã¾Æº¸´Ï±î ½ºÆ®¸²ÀÌ ÀÌ·¸°Ô ³ª¿À³×¿ä. ¸ðµç ÄÄÇ»ÅÍ ÇÁ·Î±×·¥Àº Åë½ÅÀ» À§Çؼ­ ½ºÆ®¸²À» »ç¿ëÇÕ´Ï´Ù. ÇϳªÀÇ ÇÁ·Î±×·¥¿¡¼­´Â ±¤¿ª º¯¼ö¸¦ »ç¿ëÇϰųª ÇÔ¼ö¿¡ ÀÎÀÚ¸¦ Àü´ÞÇÏ´Â ¹æ½ÄÀ¸·Î ¾î¶² °ªÀ» ´Ù¸¥ ÇÔ¼ö·Î Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ¼­·Î ´Ù¸¥ µÎ °³ÀÇ ÇÁ·Î±×·¥ÀÎ °æ¿ì¿¡´Â ¾î¶³±î¿ä? µÎ ÇÁ·Î±×·¥Àº ¼­·Î ¾î¶² ÇÔ¼ö°¡ ÀÖ´ÂÁöµµ ¸ð¸¦ »Ó´õ·¯ »ó´ëÆíÀÌ ½ÇÇàµÇ°í ÀÖ´ÂÁö ¶Ç´Â ¾î¶² ÀÏÀ» ÇÏ´ÂÁöÁ¶Â÷ ¾Ë ¼ö ¾ø½À´Ï´Ù. ±×·¯ÇÑ »óȲ¿¡¼­ ÇϳªÀÇ ÇÁ·Î±×·¥¿¡¼­ ´Ù¸¥ ÇÁ·Î±×·¥À¸·Î ¾î¶² °ªÀ» Àü´ÞÇϱâ À§Çؼ­ ½ºÆ®¸²À» »ç¿ëÇÕ´Ï´Ù.

 

¸¸ÀÏ ½ºÆ®¸²¿¡ ´ëÇØ¼­ ¾Ë°í ÀÖ´Â »ç¶÷À̶ó¸é ¹Ù·Î SocketÀ¸·Î ³Ñ¾î°¡µµ µÉ °Í °°³×¿ä.

½ºÆ®¸²Àº ÀÚ¹Ù¿¡¼­¸¸ Áö¿øÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó OSÂ÷¿ø¿¡¼­ Áö¿øÀ» ÇÏ´Â ±â´ÉÀÔ´Ï´Ù. À̸»Àº ½ºÆ®¸² Åë½ÅÀ» Çϱâ À§ÇÑ µÎ ÇÁ·Î±×·¥ÀÌ ¹Ýµå½Ã ÀÚ¹Ù·Î ÀÛ¼ºµÉ ÇÊ¿ä´Â ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. Çϳª´Â ÀÚ¹Ù·Î, ´Ù¸¥ Çϳª´Â C·Î ÀÛ¼ºµÉ ¼öµµ ÀÖ°í, ´Ù¸¥ ¾î¶² ¾ð¾î¸¦ »ç¿ëÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù´Â ÀǹÌÀÔ´Ï´Ù.

»ç½Ç À©µµ¿ì³ª À¯´Ð½º, ¸®´ª½º µîÀÇ OS¸¦ ¼³Ä¡ÇÏ¿© ÄÄÇ»Å͸¦ »ç¿ëÇÏ´Â »ç¶÷À̶ó¸é ´©±¸³ª Ç×»ó ½ºÆ®¸²À» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î À©µµ¿ìÀÇ µµ½ºÃ¢(command prompt) ¶Ç´Â À¯´Ð½º Äֿܼ¡¼­ È­¸é¿¡ ±ÛÀÚ¸¦ Âï´Â °ÍÀ̳ª, ÇÁ¸°ÅÍ¿¡ ÇÁ¸°Æ®¸¦ ÇÏ´Â °ÍÀÌ ±×·¸½À´Ï´Ù. ¿ì¸®´Â °£´ÜÇÏ°Ô System.out.println("³»¿ë..."); ¶ó´Â ¸í·ÉÀ¸·Î È­¸é¿¡ Âï½À´Ï´Ù. ±×·¯³ª ½ÇÁ¦·Î println()¸Þ¼Òµå¿¡¼­´Â ÁÖ¾îÁø ÀÎÀÚÀÇ °ªÀ» Àû´çÇÑ Àå¼Ò¿¡ ½ºÆ®¸²À» »ç¿ëÇÏ¿© Âß º¸³»ÁÖ°Ô µÇÁÒ. ½ºÆ®¸², Áï ÇϳªÀÇ ¿¬¼ÓÀûÀÎ È帧À¸·Î º¸³»´Â °ÍÀÔ´Ï´Ù. È­¸é¿¡ Ãâ·ÂÇϱâ À§Çؼ­´Â È­¸éÃâ·ÂÀ» ´ã´çÇÏ´Â À§Ä¡¿¡ ½ºÆ®¸²À¸·Î º¸³»¸é µÇ°í, ÇÁ¸°ÅÍ¿¡ Ãâ·ÂÇÏ°í ½Í´Ù¸é ÇÁ¸°ÅÍÃâ·ÂÀ» ´ã´çÇÏ´Â À§Ä¡¿¡ ½ºÆ®¸²À¸·Î º¸³»¸é µË´Ï´Ù. È­ÀÏ¿¡ ÀúÀåÇÏ´Â °Í, Çϴϸé äÆÃÇÁ·Î±×·¥Ã³·³ µÎ ÇÁ·Î±×·¥ÀÌ Åë½ÅÀ» ÇÏ´Â °Í, ¸ðµÎ »ç½ÇÀº ±×·± ¸ÞÄ«´ÏÁòÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ´ÙÀ½Àº UNIX¿¡¼­ ÆÄÀÌÇÁ¶óÀÎÀ̶ó´Â ±â´É ¼Ó¿¡¼­ ½ºÆ®¸²ÀÌ ¾î¶»°Ô »ç¿ëµÇ´ÂÁö¸¦ º¸¿©ÁÖ´Â ¿¹ÀÔ´Ï´Ù.

 

UNIX¸¦ »ç¿ëÇØº» »ç¶÷À̶ó¸é ÆÄÀÌÇÁ¶óÀÎÀ» ¾Ë°í ÀÖÀ»
 
°ÍÀÔ´Ï´Ù. windows NTÀÇ ¸í·Éâ¿¡¼­µµ Áö¿øÇÏ´Â ±â´ÉÀε¥, ls´Â µµ½º¿¡¼­ dir°ú °°Àº ±â´ÉÀ» ÇÏÁÒ?
SHELL> ls | more
¿Í °°ÀÌ °°ÀÌ ¸í·ÉÀ» ³»¸®¸é ¾î¶»°Ô µÉ±î¿ä? È­ÀÏÀÌ ¸¹Àº °æ¿ì ls¶ó°í ±×³É Çϸé ÀÐÀ» »õµµ ¾øÀÌ È­¸éÀÌ Âß ½ºÅ©·Ñ µÇÁÒ. ÇÏÁö¸¸ ¾Õ¿¡¼­¿Í °°ÀÌ Çϸé ÇÑ È­¸é ¸¸Å­¾¿¸¸ Ãâ·ÂµÇ°Ô µË´Ï´Ù. ½ÇÁ¦·Î ÀÌ ÀÛ¾÷Àº µÎ °³ÀÇ ÇÁ·Î±×·¥ÀÌ µ¹°í ÀÖ´Â °ÍÀÔ´Ï´Ù. ls¶ó´Â ÇÁ·Î±×·¥°ú more¶ó´Â ÇÁ·Î±×·¥ÀÌÁÒ. ±×³É ls¶ó°í ÃÆÀ» °æ¿ì¿¡´Â °á°ú¸¦ È­¸éÃâ·ÂÀ» ´ã´çÇÏ´Â °÷¿¡ ½ºÆ®¸²À¸·Î º¸³»Áö¸¸ Áö±Ýó·³ ÆÄÀÌÇÁ¶óÀÎÀ¸·Î ¿¬°áÇϸé, ls´Â °á°ú¸¦ ½ºÆ®¸²À¸·Î º¸³»°Ô µÇ°í, À̰ÍÀ» moreÈ£¶ó´Â ÇÁ·Î±×·¥¿¡¼­ ½ºÆ®¸²À¸·Î ¹Þ¾Æ¼­ È­¸é¿¡ ÇÑ ÆäÀÌÁö¾¿ º¸¿©ÁÖ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. µÎ ÇÁ·Î±×·¥ÀÌ Åë½ÅÀ» ÇÏ´Â °æ¿ì ÁßÀÇ ´ëÇ¥ÀûÀÎ ¿¹°¡ ¹Ù·Î ÀÌ·¯ÇÑ ÆÄÀÌÇÁ¶óÀÎÀÌÁÒ.
Á»´õ ³ª¾Æ°¡¸é ÆÄÀÌÇÁ¶óÀÎÀ» ¿©·¯ °³ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
SHELL> ls | grep txt | more
ÁüÀÛÇÏ´Ù½ÃÇÇ À̹ø¿¡´Â ÇÁ·Î±×·¥ÀÌ 3°³°¡ µ¹°Ô µË´Ï´Ù. ls°¡ È­ÀÏÀÇ ¸í·ÉÀ» »Ì¾Æ¼­ ½ºÆ®¸²À¸·Î º¸³»¸é, ±×°ÍÀ» grepÀ̶ó´Â ¸í·ÉÀÌ ¹Þ¾Æ¼­ ±×Áß txt¶ó´Â ¹®ÀÚ¿­À» Æ÷ÇÔÇÏ´Â ¶óÀθ¸À» °ñ¶ó¼­ ´Ù½Ã ½ºÆ®¸²À¸·Î º¸³À´Ï´Ù. ¸¶Áö¸·À¸·Î more¶ó´Â ÇÁ·Î±×·¥ÀÌ ¾Õ¿¡¼­¿Í °°ÀÌ ½ºÆ®¸²À¸·Î ¹Þ¾Æ¼­ ¾Õ¿¡¼­¿Í °°ÀÌ ÇÑ È­¸é¾¿ Ãâ·ÂÇÏ°Ô µË´Ï´Ù.


 

2. ½ºÆ®¸² ÀÔ·Â/ ½ºÆ®¸² Ãâ·Â


½ºÆ®¸²¿¡´Â »ç½Ç ¿©·¯ Á¾·ù°¡ ÀÖ½À´Ï´Ù. byte½ºÆ®¸²,¹®ÀÚ¿­½ºÆ®¸²,µ¥ÀÌÅͱ׷¥½ºÆ®¸² µîÀÌ ±×°ÍÀÔ´Ï´Ù. ¿©±â¼­´Â »ç½Ç ¹®ÀÚ¿­(String)½ºÆ®¸²¸¸À» ´Ù·ç·Á°í ÇÕ´Ï´Ù. byte½ºÆ®¸²°ú ¹®ÀÚ¿­ ½ºÆ®¸²Àº 12¶ó´Â Á¤¼ö°¡ "12"·Î °¡´À³Ä(¹®ÀÚ¿­½ºÆ®¸²) ¾Æ´Ï¸é 0C(12)ÀÎ ¼ýÀÚ(byte½ºÆ®¸²)À¸·Î °¡´À³ÄÀÇ Â÷À̰¡ ÀÖÀ»»Ó °ÅÀÇ ºñ½ÁÇÕ´Ï´Ù. µ¥ÀÌÅͱ׷¥ ½ºÆ®¸²Àº ¾à°£ ´Ù¸£Áö¸¸ ¹®ÀÚ¿­ ½ºÆ®¸²À» ¾Ë°í³ª¸é ±Ý¹æÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

¾ÕÀÇ UNIXÀÇ ÆÄÀÌÇÁ¶óÀÎ ¿¹Á¦¸¦ º¸°í ¾Ë¾ÆÃ¦ »ç¶÷µµ ÀÖÀ»Å×Áö¸¸, ½ºÆ®¸²Àº ÀԷ°ú Ãâ·ÂÀÌ ÀÖ½À´Ï´Ù. Áï ½ºÆ®¸²À» º¸³»´Â °Í°ú ¹Þ´Â °Í, µÎ °¡Áö µ¿ÀÛÀÌ ÀÖÀ» ¼ö ÀÖ´Ù´Â À̾߱âÀÔ´Ï´Ù. ÇÁ¸°ÅÍ¿¡ Ãâ·ÂÇÏ´Â °æ¿ì, ÇÁ·Î±×·¥¿¡¼­´Â ÇÁ¸°ÅͽºÆ®¸²¿¡ º¸³»´Â(Ãâ·Â) ¿ªÇÒÀ» ÇÒ °ÍÀ̰í, ÇÁ¸°ÅÍ´Â ±×°ÍÀ» ½ºÆ®¸²¿¡¼­ ¹Þ¾Æ¼­(ÀÔ·Â) ÀμâÇÏ°Ô µÇ°ÚÁÒ. ¾ÕÀÇ ÆÄÀÌÇÁ¶óÀÎÀÇ °æ¿ì, ¾Õ¿¡ ÀÖ´Â ÇÁ·Î±×·¥¿¡¼­ ½ºÆ®¸²À¸·Î Ãâ·ÂÀ» Çϸé, µÚ¿¡ ÀÖ´Â ÇÁ·Î±×·¥¿¡¼­ ±×°ÍÀ» ¹Þ°Ô µÇ´Â °ÍÀÔ´Ï´Ù.


 


3. StreamÀÇ »ç¿ë


C¿Í °°Àº ´Ù¸¥ ¾ð¾î¿Í ¸¶Âù°¡Áö·Î ÀÚ¹Ù¿¡¼­µµ InputStream°ú OutputStreamÀ» Áö¿øÇϰí ÀÖ½À´Ï´Ù. Áï ÀÌ Å¬·¡½ºµéÀ» ÀÔ·Â ¶Ç´Â Ãâ·ÂÇϰíÀÚÇÏ´Â Àû´çÇÑ °´Ã¼¿¡ ¿¬°á½ÃÄÑÁØ ´ÙÀ½ read³ª write ¸Þ¼Òµå µîÀ» »ç¿ëÇÏ¿© ÀԷ°ú Ãâ·ÂÀ» ÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ¸¸ÀÏ Å°º¸µå·ÎºÎÅÍ ÀÔ·ÂÀ» ¹Þ¾Æ¼­ È­¸é¿¡ Ãâ·ÂÇϰíÀÚÇϸé,

 

InputStream in=System.in;
OutputStream out=System.out;

¿Í °°ÀÌ ¼±¾ðÇÏ¿©, in.read()¹®À¸·Î ³»¿ëÀ» ÀÔ·Â ¹Þ¾Æ¼­ out.write()¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© Ãâ·ÂÇÒ ¼ö ÀÖ´Ù´Â ¸»ÀÔ´Ï´Ù. ¸¸¾à in°ú outÀÌ °¢°¢ È­ÀÏÀ̳ª, ÇÁ¸°ÅÍ µî¿¡ ¿¬°áµÇ¾î ÀÖ´Ù¸é ¹°·Ð È­ÀÏ¿¡¼­ ³»¿ëÀ» Àаųª ¾µ ¼ö ÀÖ°í, ÇÁ¸°ÅÍ¿¡ Ãâ·ÂÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

ÇÏÁö¸¸ ¿©±â¿¡¼­´Â ½ºÆ®¸²À» »ç¿ëÇÏ´Â ÀϹÝÀûÀÎ ¹æ¹ý¿¡ ´ëÇØ¼­´Â ¼³¸íÇÏÁö ¾Ê°í, ¹Ù·Î ¼ÒÄÏÀ¸·Î ³Ñ¾î°¡µµ·Ï ÇϰڽÀ´Ï´Ù. ÀÚ¹Ù¿¡¼­´Â È­¸é¿¡ Ãâ·ÂÇϱâ À§Çؼ­ ÄܼÖ(È­¸é)À» »ç¿ëÇÏ´Â °æ¿ì´Â °ÅÀÇ ¾ø½À´Ï´Ù. ÇÏÁö¸¸ ÄܼÖ(Űº¸µå)¿¡¼­ ÀԷ¹ޱâ À§ÇÑ °æ¿ì³ª, ÇÁ¸°ÅÍ¿¡ Ãâ·ÂÇϰíÀÚÇÏ´Â °æ¿ì, È­ÀÏÀÇ ³»¿ëÀ» Àаųª ¾²´Â °æ¿ì¿¡´Â ¹Ýµå½Ã ½ºÆ®¸²À» »ç¿ëÇÕ´Ï´Ù. ¶ÇÇÑ ¹Ù·Î µÚ¿¡¼­ ´Ù·ê, TCP/IP ProtocolÀ» ÀÌ¿ëÇÑ ÀÎÅͳݿ¡¼­ÀÇ Åë½Å¿¡¼­µµ ¹°·Ð ½ºÆ®¸²À» »ç¿ëÇÕ´Ï´Ù.

 

--------------------------------------------------------------------------------

 


Socket in TCP/IP protocol

1. Socket


¿©±â¼­ºÎÅͰ¡ À̹ø ±Û¿¡¼­ÀÇ º»·ÐÀÔ´Ï´Ù. »ç½Ç swingÀ̳ª awt°°Àº Ãß»óÀ©µµ¿ìŸŶÀ» »ç¿ëÇϸé Űº¸µå·ÎºÎÅÍ ÀԷ¹޴ °ÍÀ» Á÷Á¢ ÀÛ¼ºÇÒ Çʿ䵵 ¾ø°í, ÇÁ¸°ÅÍ Ãâ·Â ºÎºÐµµ »ç½Ç ³²ÀÌ ÀÛ¼ºÇØ ³õÀº Äڵ带 º¹»çÇØ¼­ ¾à°£ ¼öÁ¤ÇÏ¸é ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. È­ÀÏ ÀÔÃâ·Âµµ ½ºÆ®¸²À» Á¦´ë·Î ¼³Á¤¸¸ ÇØ³õÀ¸¸é È­¸é¿¡ Ãâ·ÂÇϵíÀÌ °£´ÜÇÏ°Ô ÀԷ°ú Ãâ·ÂÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ socketÀ» ÀÌ¿ëÇÑ ÇÁ·Î±×·¥¸¸Àº ±×·¸Áö°¡ ¾Ê½À´Ï´Ù. ¹°·Ð °³³äÀº ½ºÆ®¸²À» »ç¿ëÇÏ´Â ´Ù¸¥ ÀÛ¾÷µé°ú Å©°Ô ´Ù¸£Áö ¾ÊÁö¸¸ ±â¼úÀûÀÎ ¸é¿¡ À־ ¿øÇÏ´Â ±â´ÉÀ» ±¸ÇöÇÏ´Â °ÍÀÌ ±×¸® ½±Áö¸¸Àº ¾Ê±â ¶§¹®ÀÔ´Ï´Ù.

ÀÌÁ¦ºÎÅÍ Á¤½ÅÀ» ¶È¹Ù·Î Â÷¸®¼¼¿ä. À̱ۿ¡¼­´Â ¼ÒÄÏÀÇ ±¸Á¶³ª TCP/IP¿Í °°Àº ÀϹÝÀûÀÎ ³×Æ®¿öÅ© Á¤º¸¿¡ ´ëÇØ¼­´Â »ý·«Çϵµ·Ï ÇϰڽÀ´Ï´Ù. ¹Ì¸® ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù´Â ¾ê±â´Â ¾Æ´Ï°í ÀÚ¼¼È÷´Â ¸ô¶óµµ µÈ´Ù´Â ¸»ÀÔ´Ï´Ù. À̱ۿ¡¼­´Â ¸ÕÀú ¼ÒÄÏÀ» Á¤ÀÇÇØ¼­ ½ºÆ®¸²À» »ç¿ëÇÏ¿© ÀԷ°ú Ãâ·ÂÀ» ¹Þ´Â °ÍÀ» °£´ÜÈ÷ ±¸ÇöÇÏ´Â ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇØº¸°í, ¸¶Áö¸·¿¡ °¡¼­´Â ÇϳªÀÇ ¼­¹ö¿¡ ¿©·¯ °³ÀÇ Å¬¶óÀÌ¾ðÆ®°¡ Á¢¼ÓÇÏ´Â ¸ÖƼ Ŭ¶óÀÌ¾ðÆ® Ã¤ÆÃÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇϵµ·Ï ÇϰڽÀ´Ï´Ù.

 

 

ÇÁ·ÎÁ§Æ®1. ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®


¿©±â¼­ ¿Ï¼ºµÉ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ¼ø¼­·Î ÀÛµ¿À» ÇÏ°Ô µË´Ï´Ù.

 

1. ¼­¹ö°¡ ¼ÒÄÏÀ» »ý¼ºÇÏ°í ¿¬°áÀ» ±â´Ù¸°´Ù.
2. Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹öÀÇ ¼ÒÄÏ¿¡ ¿¬°áÇÑ´Ù.
3. Ŭ¶óÀÌ¾ðÆ®¿¡¼­ µ¥ÀÌÅ͸¦ Àü¼Û´Ù.
4. ¼­¹ö¿¡¼­ µ¥ÀÌÅ͸¦ ¹Þ¾Æ¼­ È­¸é¿¡ Ãâ·ÂÇÑ´Ù.
5. ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®ÀÇ ¼ÒÄÏ ¿¬°áÀ» ²÷´Â´Ù.

ÀÌ ÇÁ·ÎÁ§Æ®¿¡¼­´Â ¹°·Ð µÎ °³ÀÇ ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ¾ß ÇϰÚÁÒ. ¼­¹ö Âʰú Ŭ¶óÀÌ¾ðÆ® ÂÊÀÔ´Ï´Ù.

°¢°¢ SocketServer.java ¿Í SocketClient.java ·Î Çϱâ·Î ÇÏÁÒ.

 

¿¹Á¦ ÇÁ·Î±×·¥: SocketServer.java / SocketClient.java
¿ì¼±Àº À§ÀÇ ¿¹Á¦ ÇÁ·Î±×·¥À» ´Ù¿î¹Þ¾Æ¼­ ½ÇÇà½ÃÄѺ¸±â¸¦ ¹Ù¶ø´Ï´Ù. ÄܼÖ(À©µµ¿ì¿¡¼­´Â ¸í·É ÇÁ·ÒÇÁÆ® = ÇÑ±Û MS-DOS)¸¦ µÎ °³¸¦ ¶ç¿ö¾ß°ÚÁÒ. ¾Æ¹« Äֿܼ¡¼­³ª µÎ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÇÕ´Ï´Ù.

SHELL> javac SocketServer.java
SHELL> javac SocketClient.java

ÄÄÆÄÀÏ µÈ ÈÄ ½ÇÇà½Ãŵ´Ï´Ù. ÇϳªÀÇ Äֿܼ¡¼­ ¼­¹ö¸¦ ¸ÕÀú ½ÇÇà½Ãŵ´Ï´Ù. ÆÄ¶ó¹ÌÅÍ·Î Æ÷Æ®°ªÀ» Áִµ¥, ÁÖÁö ¾ÊÀ¸¸é 5777¹øÀÌ ÀâÈ÷°Ô µË´Ï´Ù. Æ÷Æ®¹øÈ£´Â 3000¹ø ÀÌ»óÀÇ °ªÀ» ÁÖ´Â°Ô ÁÁ½À´Ï´Ù.

SHELL> java SocketServer 6000

±×·¯¸é Æ÷Æ®¹øÈ£¿Í Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸°´Ù´Â ¸Þ½ÃÁö°¡ ³ª¿À°Ô µË´Ï´Ù. 6000Àº Æ÷Æ® ¹øÈ£ÀÔ´Ï´Ù. ÀÌ °ªÀº »ý·«°¡´ÉÇÏ°í »ý·«Çϸé 5777¹ø Æ÷Æ®¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù. ±×·¯¸é Ŭ¶óÀÌ¾ðÆ®¸¦ ½ÇÇà½Ãŵ´Ï´Ù. ÆÄ¶ó¹ÌÅÍ´Â IP¿Í Æ÷Æ®¹øÈ£¸¦ ÁÝ´Ï´Ù.

SHELL> java SocketClient 6000 211.35.136.174

Æ÷Æ®¹øÈ£´Â ¹°·Ð ¾ÕÀÇ ¼­¹ö¿¡¼­ ¼³Á¤ÇÑ Æ÷Æ®¹øÈ£¿Í °°¾Æ¾ß ÇϰÚÁÒ. IP´Â ÀÚ½ÅÀÇ ÄÄÇ»ÅÍ ¾ÆÀÌÇǸ¦ ÁÖ¸é µË´Ï´Ù. IP¸¦ ÁÖÁö ¾ÊÀ¸¸é 127.0.0.1¿¡ ¿¬°áÇϴµ¥, º¸Åë ÀÌ ¹øÈ£´Â ·ÎÄà ȣ½ºÆ®, Áï ÀÚ±â ÀÚ½ÅÀ» ÀǹÌÇÕ´Ï´Ù. ¸¸¾à ÀÌ ¹øÈ£·Î µÇÁö ¾Ê°Å³ª ´Ù¸¥ ÄÄÇ»ÅÍ¿¡¼­ SocketServer¸¦ ½ÇÇà½ÃÄ×´Ù¸é IP¸¦ ¹Ýµå½Ã ½áÁÖ¾î¾ß ÇϰÚÁÒ. ¾Æ¹«Æ° ¼­¹ö¿Í Æ÷Æ® ¹øÈ£°¡ ÀÏÄ¡Çϰí IP¸¦ Àû´çÈ÷ ÁÖ¾ú´Ù¸é Ŭ¶óÀÌ¾ðÆ®´Â ¼­¹ö¿¡ ¿¬°áÇÏ¿© ¿­±ÛÀÚÀÇ µ¥ÀÌÅ͸¦ º¸³½ ÈÄ Á¾·áÇÏ°Ô µË´Ï´Ù. ¼­¹öµµ ¼ÒÄÏÀ» ²÷°í Á¾·áÇÏ°Ô µË´Ï´Ù.
 


À§ÀÇ ¿¹Á¦¸¦ ½ÇÇà½ÃÄѺ¸¾Ò´Ù¸é, ¾ÆÁ÷ ¼Ò½º´Â º¸Áö ¸»°í °øºÎ¸¦ ½ÃÀÛÇØº¾½Ã´Ù. ¼ÒÄÏÀº TCPÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© Åë½ÅÀ» Çϴµ¥ ¾²ÀÎ´Ù°í ¾Õ¿¡¼­ ¾ê±âÇß½À´Ï´Ù. µû¶ó¼­ ¼ÒÄÏÀÇ ±âº»Àº IP¿Í port°ÚÁÒ. À̰͵éÀÌ °¢°¢ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö´Â ¾ËÁö ¸øÇصµ »ó°ü¾ø½À´Ï´Ù. ¾Æ¹«Æ° IP´Â ÄÄÇ»Å͸¶´Ù °¡Áø °íÀ¯ÇÑ ÁÖ¼ÒÀ̰í, port´Â Åë½ÅÀ» À§ÇÑ ¿¬°á ¶óÀΰú °°Àº °ÍÀ̶ó°í¸¸ ¾Ë°í ÀÖÀ¸¸é µË´Ï´Ù. ¾Æ¹«Æ° ¼ÒÄÏÀ» »ç¿ëÇÏ¿© ¾î¶² ÇÁ·Î±×·¥°ú ¿¬°áÀ» Çϱâ À§Çؼ­´Â ±× ÇÁ·Î±×·¥ÀÌ ÀÖ´Â ÄÄÇ»ÅÍÀÇ IP¿Í ¼ÒÄÏÀ» ¸¸µç port¹øÈ£¸¦ ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù´Â °Í¸¸ ±â¾ïÇÏ¸é µË´Ï´Ù.

 

1) ¼­¹ö ¼ÒÄÏ ÁغñÇϱâ( SocketServer.java )

Åë½ÅÀ» Çϱâ À§Çؼ­´Â ¸ÕÀú ¼­¹ö¿¡¼­ ¼ÒÄÏÀ» ÁغñÇØ¾ß ÇÕ´Ï´Ù. ÀÚ¹Ù¿¡¼­´Â ±×°ÍÀ» À§ÇØ ServerSocketÀ̶ó´Â Ŭ·¡½º°¡ Á¦°øµË´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ÃʱâÈ­¸¦ ÇÏ¸é ¼­¹ö ¼ÒÄÏÀÌ ¸¸µé¾îÁý´Ï´Ù.

À̰ÍÀº java.net ÆÐŰÁö¿¡ µé¾îÀÖ½À´Ï´Ù.

 

ServerSocket ¼ÒÄϺ¯¼öÀ̸§=new ServerSocket(Æ÷Æ®¹øÈ£);

 

Æ÷Æ®¹øÈ£´Â Á¤¼öÀ̰í, ¼ÒÄϺ¯¼öÀ̸§Àº ¾Æ¹«°ÍÀ̳ª º¯¼ö·Î ¾µ ¼ö ÀÖ´Â °ÍÀ» ½áÁÖ¸é µË´Ï´Ù. ¿¹¸¦ µé¸é ServerSocket srvSocket=new ServerSocket(5777); ¶ó°í ¼±¾ðÇÒ ¼ö ÀÖ°ÚÁÒ.


´ÙÀ½Àº ÀÌ ¼­¹ö¼ÒÄÏÀ» »ç¿ëÇÏ¿© Ŭ¶óÀÌ¾ðÆ®¿Í Åë½ÅÇÒ ´Ù¸¥ ¼ÒÄÏÀ» ¸¸µé¾îÁÖ´Â ÀÛ¾÷ÀÔ´Ï´Ù. ¼­¹ö ÂÊ¿¡¼­´Â ¹Ýµå½Ã µÎ °³ÀÇ ¼ÒÄÏÀÌ ÇÊ¿äÇÕ´Ï´Ù. Çϳª´Â ¼­¹ö¿ë ¼ÒÄÏÀε¥ À̰ÍÀ¸·Î´Â Åë½ÅÀ» ÇÒ ¼ö°¡ ¾ø°í ´ÜÁö Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸³´Ï´Ù. µû¶ó¼­ Ŭ¶óÀÌ¾ðÆ®¿Í ¿¬°áÀÌ µÇ¸é ½ÇÁ¦·Î Åë½ÅÀ» Çϱâ À§Çؼ­´Â ¼ÒÄÏÀ» Çϳª ´õ ¸¸µé¾î¼­ ¿¬°áÇØÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

ÀÌ ¼ÒÄÏÀº ¼­¹ö¼ÒÄÏ.accept()¸í·ÉÀ¸·Î ¸¸µé¾îÁÙ ¼ö ÀÖ½À´Ï´Ù.

 

Socket soc=srvSocket.accept();

 

¿©±â¼­ srvSocketÀº ¾Æ±î ¼±¾ðÇØÁØ ¼­¹ö¼ÒÄÏÀÇ À̸§ÀÌ µË´Ï´Ù. Ŭ·¡½ºÀÇ À̸§ÀÌ SocketÀÓÀ» ´«¿©°Ü º¸¾Æ¾ß ÇÕ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡¼­µµ ÀÌ ¼ÒÄÏÀ» »ç¿ëÇÏ¿© ¿¬°áÇÏ°Ô µË´Ï´Ù.

´ÙÀ½Àº ÀÔ·ÂÀ» À§ÇÑ ½ºÆ®¸²À» ¼±¾ðÇÏ´Â ºÎºÐÀÔ´Ï´Ù. ¹°·Ð ¸¸µé¾î ³õÀº ¼ÒÄÏ¿¡¼­ ½ºÆ®¸²À» ¾ò¾î¿Í¾ß ÇϰÚÁÒ. ½ºÆ®¸²Àº java.io ÆÐŰÁö¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

 

InputStream is=soc.getInputStream();

 

ÀÌ·¸°Ô is´Â ½ºÆ®¸²º¯¼ö À̸§À̰í, soc´Â ¾Õ¿¡¼­ ¼±¾ðÇÑ ¼ÒÄÏÀÇ À̸§ÀÔ´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ÀԷ½ºÆ®¸²ÀÌ ¾ò¾îÁ³½À´Ï´Ù. ±×¸®°í³ª¼­, ÀÌ ½ºÆ®¸²¿¡¼­ ÀÔ·ÂÀ» ¹Þ±âÀ§Çؼ­´Â ÀÌ ½ºÆ®¸²À» ÀÐÀ» ¼ö ÀÖ´Â Reader¸¦ Á¤ÀÇÇØ¾ß¸¸ ÀÐÀ» ¼ö°¡ ÀÖ°ÚÁÒ. ¸¶Ä¡ ºñµð¿ÀÅ×ÀÌÇÁ¿Í VTR°ú °°Àº °ü°èÀÔ´Ï´Ù. VTR¿¡ ºñµð¿À Å×ÀÌÇÁ¸¦ ³Ö¾îÁÖ¾î¾ß ÇϰÚÁÒ.

 

InputStreamReader isr=new InputStreamReader(is);

 

¿©±â¼­ is´Â ¾Õ¿¡¼­ ¼±¾ðÇÑ inputstreamÀ̰í, isrÀº InputStreamReaderÀÇ À̸§ÀÔ´Ï´Ù. À̰ÍÀ¸·Î ¼­¹öÂÊ¿¡¼­ ¼ÒÄÏÀ» ÁغñÇÏ´Â °ÍÀº ¸ðµÎ ³¡³µ½À´Ï´Ù. µ¥ÀÌÅ͸¦ Àбâ À§Çؼ­´Â InputStreamReader¿¡ ÀÖ´Â read()¸Þ¼Òµå¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.

Áï, int a=isr.read();¿Í °°ÀÌ Çϸé a¿¡ ÇÑ ±ÛÀÚ°¡ ÀԷµ˴ϴÙ. int°ªÀ¸·Î ³Ñ¾î¿À´Âµ¥, ¹®ÀÚ·Î ¹Ù²Ù±â À§Çؼ­´Â Çüº¯È¯(type casting)À» ÇØÁÖ¸é µÇ°ÚÁÒ.

char a=(char) isr.read(); ¿Í °°ÀÌ ÇÏ¸é µÇ°ÚÁÒ.

µé¾î¿À´Â ¹®ÀÚµéÀ» ÇϳªÀÇ ¹®ÀÚ¿­¿¡ ÀúÀåÇϱâ À§Çؼ­´Â str=str+(char)isr.read(); ¿Í °°ÀÌ ¹®ÀÚ¿­¿¡ ´õÇØÁÖ¸é µË´Ï´Ù.

 

2) Ŭ¶óÀÌ¾ðÆ® ¼ÒÄÏ (SocketClient.java)

Ŭ¶óÀÌ¾ðÆ® ¼ÒÄÏÀº ¼­¹ö ¼ÒÄϺ¸´Ù ÈξÀ ½±½À´Ï´Ù. ¼­¹ö ¼ÒÄÏÀº Çʿ䰡 ¾ø°í, InputStreamÀ» OutputStreamÀ¸·Î, InputStreamReader¸¦ OutputStreamWriter·Î ¹Ù²Ù±â¸¸ ÇÏ¸é µË´Ï´Ù.

¸ÕÀú ¼ÒÄÏÀ» ¸¸µé¾î¾ß°ÚÁÒ. ¾Õ¿¡¼­ »ý¼ºÇÑ ¼­¹öÀÇ IP¿Í port¹øÈ£¸¦ ¾Ë°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.

 

Socket soc=new Socket("127.0.0.1", 5777);

 

¿©±â¼­ "127.0.0.1"Àº IPÁÖ¼ÒÀÔ´Ï´Ù. ¾Õ¿¡¼­ ¼³¸íÇÑ´ë·Î À̰ÍÀº ÀÚ±â ÀÚ½ÅÀ» ÀǹÌÇÕ´Ï´Ù. ¸¸¾à ¼­¹ö°¡ ´Ù¸¥ ÄÄÇ»ÅÍ¿¡ ÀÖ´Ù¸é ±× ÄÄÇ»ÅÍÀÇ IP¸¦ Àû¾î¾ß ÇÕ´Ï´Ù. 5777Àº Æ÷Æ®¹øÈ£ÀÔ´Ï´Ù. soc´Â ¹°·Ð ¼ÒÄÏÀÇ À̸§À¸·Î º¯¼ö·Î ¾µ ¼ö ÀÖ´Â °ÍÀ» Àû¾îÁÖ¸é µË´Ï´Ù. ¿©±â¼­ ¾Æ±î ´«¿©°ÜºÁ¾ß ÇÑ´Ù´ø °ÍÀ» ±â¾ïÇØ¼­ Socket°ú µ¿ÀÏÇÑ Å¬·¡½º¸¦ »ç¿ëÇϰí ÀÖ´Ù´Â °ÍÀ» È®ÀÎÇϼ¼¿ä.

´ÙÀ½Àº ÀÌ ¼ÒÄÏ¿¡¼­ ½ºÆ®¸²À» »ý¼ºÇÏ´Â °ÍÀÔ´Ï´Ù. ¼­¹ö·Î µ¥ÀÌÅ͸¦ º¸³»´Â °ÍÀÌ´Ï±î ´ç¿¬È÷ InputStreamÀÌ ¾Æ´Ï¶ó OutputStreamÀ» »ç¿ëÇØ¾ß ÇϰÚÁÒ.

 

OutputStream os=soc.getOutputStream();

 

ÀÌ ¹®ÀåÀÌ Àß ÀÌÇØ°¡ ¾È°¡¸é ¾ÕÀÇ ¼­¹ö ÂÊÀÇ InputStreamÀ» ¸¸µå´Â ºÎºÐÀ» Àо¼¼¿ä. ÀÌÁ¦ ¾Õ¿¡¼­¿Í ¸¶Âù°¡Áö·Î OutputStreamWriter¸¦ ¸¸µé¾îÁà¾ß ÇϰÚÁÒ.

 

OutputStreamWriter osw=new OutputStreamWriter(os);

 

ÀÌ·¸°Ô Çϸé writer±îÁö ¹«»çÈ÷ ¸¸µé¾îÁ³½À´Ï´Ù. ÀÌÁ¦ µ¥ÀÌÅ͸¦ Àü¼ÛÇϱâ À§Çؼ­´Â write()¸Þ¼Òµå¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö´Â ´ÙÀ½¿¡¼­ ¹è¿ì±â·Î ÇսôÙ.

 

3) ½ºÆ®¸²À» ÅëÇÑ µ¥ÀÌÅÍÀÇ ÀÔÃâ·Â

¾Õ¿¡¼­ InputStreamReader¿Í OutputStreamReader¸¦ ¸¸µé¾ú½À´Ï´Ù. ÀÌÁ¦ ±× Ŭ·¡½º¿¡ ±¸ÇöµÈ ¸Þ¼Òµå(read, write)¸¦ »ç¿ëÇØ¼­ ±×³É ÀÐ°í ¾²¸é µË´Ï´Ù.

ÀÚ¹Ù ½ºÆå ¿¡¼­ InputStreamReader¿Í OutputStreamReader¸¦ ã¾Æ º¸¼¼¿ä.

ã±â°¡ ½±Áö´Â ¾Ê°ÚÁö¸¸, ¾ÕÀ¸·Î ÀÚ¹Ù °øºÎ¸¦ Çϱâ À§Çؼ­´Â ÇÏ·ç¿¡µµ ¼ö½Ê¹ø ¾¿ ÇØ¾ß ÇÏ´Â ÀÏÀÌ´Ï±î ½º½º·Î ã¾Æº¸¼¼¿ä.

 

InputStreamReader¿¡ º¸´Ï±î read ¸Þ¼Òµå°¡ µÎ °³·Î Á¤ÀǵǾî Àֳ׿ä.

- int read();
- void read(char[] chr, int offset, int length);

¾ÕÀÇ °ÍÀº ¼³¸í¿¡ ÇÑ ±ÛÀÚ¸¦ ¾ò¾î¿Â´Ù°í ÀûÇôÀֳ׿ä. Áï, a=isr.read();¶ó°í Çϸé a¿¡´Â ÇÑ ±ÛÀÚ¸¸ µé¾î°¡ ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. a´Â Á¤¼öÇü(int)À̾î¾ß ÇÕ´Ï´Ù. À̰ÍÀ» ¹®ÀÚ·Î ¹Ù²Ù±â À§Çؼ­´Â Çüº¯È¯(type casting)À» ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. µÚÀÇ °ÍÀº ¸î ¹øÂ° ±ÛÀÚ(offset)ºÎÅÍ ¸î ±ÛÀÚ(length)¸¦ ¾ò¾î¿Í¼­ charÀÇ ¹è¿­¿¡ ³Ö´Â´Ù´Â ÀǹÌÀÎ °Í °°½À´Ï´Ù.

 

public static void main(String args[]) {
   InputStreamReader isr=new InputStreamReader(new ServerSocket(5777).accept().getInputStream());
   String str="";
   for (int i=0; i<10; i++) {

     str="str+(char)isr.read();"

   }

   System.out.println(str);

   isr.close();

}


ÀÚ ÇÁ·Î±×·¥ÀÌ Çϳª ¿Ï¼ºµÇ¾ú½À´Ï´Ù. InputStreamReader¸¦ ¸¸µé±â À§ÇØ ServerSocketÀ» ¸¸µé°í ±×°ÍÀÇ accept()¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼­ SocketÀ» ¸¸µé°í ´Ù½Ã InputStreamÀ» ¸¸µå´Â ¸ðµç °úÁ¤À» ±×³É ÇÑ ÁÙ·Î ³¡³Â½À´Ï´Ù. °ýÈ£ÀÇ °¡Àå ¾ÈÂʺÎÅÍ Â÷±ÙÂ÷±Ù Àо¸é ¾Õ¿¡¼­ ¼³¸íÇÑ ¼ø¼­·Î ¸¸µé¾îÁÖ¾ú´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½¿¡´Â strÀ» StringÀ¸·Î ¼±¾ðÇØÁÖ°í for¹®À¸·Î ¿­°³ÀÇ ¹®ÀÚ¸¦ Àоî¿Í¼­ str¿¡ ´õÇØÁÖ°í¼­ ´Ù½Ã strÀ» Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À̳׿ä.
ÁÖÀÇÇØ¾ß ÇÒ Á¡Àº ÀÌ ÄÚµå´Â ½ÇÇàµÇÁö ¾Ê´Â´Ù´Â Á¡ÀÔ´Ï´Ù. ¹Ù·Î ´ÙÀ½¿¡¼­ ÇÒ exception󸮸¦ º¸°í³ª¸é ÀÌ Äڵ带 ¼öÁ¤ÇÏ¿© ½ÇÇà½Ãų ¼ö ÀÖ½À´Ï´Ù. Àû´çÇÑ ÆÐŰÁö(java.io, java.net)¸¦ importÇϰí, exceptionÀ» ó¸®Çؼ­, ÀÌ Å¬·¡½º¸¦ SocketServer.java Ŭ·¡½º¿¡ ³Ö¾îÁÖ¸é ¼­¹ö´Â ¿Ï¼ºµË´Ï´Ù.

Ŭ¶óÀÌ¾ðÆ®ºÎºÐÀº Á»´õ ½±½À´Ï´Ù.


public static void main(String args[]) {

   OutputStreamWriter osw=new 
   OutputStreamWriter(new Socket("127.0.0.1",5777).getOutputStream());
   String str="0123456789";
   osw.write(str,0,10);
   osw.flush();
   osw.close();
}

¾Æ±î¿Í ¸¶Âù°¡Áö·Î spec¿¡¼­ ã¾Æº¸¸é OutputStreamWriterŬ·¡½º¿¡´Â write()°¡ ¿©·¯ °³·Î Á¤ÀǵǾî ÀÖ½À´Ï´Ù. ÇÑ ±ÛÀÚ¾¿ Àü¼ÛÇÏ´Â °Íµµ ÀÖ°í, Áö±Ýó·³ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Áö±ÝÀº strÀÇ 0¹øÂ° ±ÛÀÚºÎÅÍ 10°³ÀÇ ±ÛÀÚ¸¦ Àü¼ÛÇ϶ó´Â ÀǹÌÀÔ´Ï´Ù. osw.flush();´Â ±ÛÀÚ¸¦ ½ÇÁ¦·Î Àü¼ÛÇ϶ó´Â ÀǹÌÀÔ´Ï´Ù. À̰ÍÀ» ½áÁÖÁö ¾ÊÀ¸¸é ¸Þ½ÃÁö¸¦ ¹Þ´Â ÂÊ¿¡¼­ ½ÇÁ¦·Î ÀÐÀ» ¼ö°¡ ¾ø½À´Ï´Ù.

¹æ±Ý ÇØº¸´Ï±î, À§ÀÇ ÄÚµåµéÀº ÀüºÎ ½ÇÇàÀÌ µÇ³×¿ä. ¹°·Ð exception󸮸¦ ÇØÁà¾ß ÇÕ´Ï´Ù. ±×·³ ½Ã°£ ³¶ºñÇÏÁö ¸»°í ¾î¼­ exception󸮸¦ ¹è¿öº¾½Ã´Ù.

 

4) exceptionó¸®

exceptionÀº ´Ü¾î ¶æ ±×´ë·Î ¿¹¿Ü»óȲÀ» ÀǹÌÇÕ´Ï´Ù. ¸¸¾à ¼­¹ö¿¡¼­ ¼­¹ö¼ÒÄÏÀ» ¸¸µå´Âµ¥ »ç¿ëÇϰíÀÚÇÏ´Â Æ÷Æ®(¿¹¸¦ µé¸é 5777)°¡ »ç¿ëÁßÀ̶ó°í ÇØº¾½Ã´Ù. ±×·¯¸é ¼ÒÄÏÀ» ¸¸µé ¼ö°¡ ¾ø°ÚÁÒ. ÇÏÁö¸¸ À̰ÍÀº ÄÄÆÄÀÏÇÒ¶§´Â ¿¡·¯°¡ ³ªÁö ¾Ê½À´Ï´Ù. ÄÄÆÄÀÏÇÒ¶§ Æ÷Æ®¸¦ »ç¿ëÇÏ´ÂÁö¸¦ °Ë»çÇØº¸´Â °ÍÀº Àǹ̰¡ ¾ø°ÚÁÒ? ÄÄÆÄÀÏÇÒ¶§´Â Æ÷Æ®°¡ »ç¿ëÁßÀÌ ¾Æ´Ï´õ¶óµµ ½ÇÇàÇÒ¶§ »ç¿ëÁßÀÏ ¼öµµ ÀÖÀ¸´Ï±î¿ä. Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼ÒÄÏÀ» ¸¸µé¶§µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ¸¸¾à ¼­¹ö¸¦ ½ÇÇà½ÃŰÁö ¾ÊÀº »óȲÀ̶ó¸é, Ŭ¶óÀÌ¾ðÆ®¸¦ ¾Æ¹«¸® Àß ÀÛ¼ºÇؼ­ ½ÇÇà½ÃŰ´õ¶óµµ ¼ÒÄÏÀ» ¿¬°áÇÒ ¼ö°¡ ¾ø°ÚÁÒ. ÀÌ·¯ÇÑ »óȲÀ» ¿¹¿Ü»óȲ(exception)À̶ó°í ÇÕ´Ï´Ù. ¿¹¿Ü»óȲÀº ¿À·ù(error)¿Í´Â ÀüÇô ´Ù¸¥ °ÍÀÔ´Ï´Ù. ¿¡·¯´Â »ç¿ëÀÚ°¡ ÄÚµùÇÒ¶§ ½Ç¼öÇØ¼­ ÄÄÆÄÀÏÁ¶Â÷ ¾ÈµÇ´Â »óȲÀÌÁö¸¸, ¿¹¿Ü»óȲÀº ÄÚµùÀº ÀߵǾú´õ¶óµµ ½Ã½ºÅÛÀÇ »óȲ¿¡ µû¶ó¼­ ¹ß»ýÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹ÄÁ´ë, ¿¡·¯´Â ÄÄÆÄÀÏÇÒ¶§, ¿¹¿Ü»óȲÀº ½ÇÇàÇÒ¶§ ¹ß»ýÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.

 

¿¹¿Ü»óȲÀ» Àß Àâ¾ÆÁÖ´Â °ÍÀº ´ë´ÜÈ÷ Áß¿äÇÕ´Ï´Ù. Áö±Ýó·³ ¼­¹ö ¼ÒÄÏÀ» ¸¸µé¾úÀ»¶§ ¿¹¿Ü»óȲÀÌ ¹ß»ýÇÏ¿© ½Ã½ºÅÛÀÇ ÀÚ¿ø(¸Þ¸ð¸®, CPU»ç¿ë µî)À» ¹ÝȯÇÏÁö ¾Ê´Â´Ù¸é ÄÄÇ»Å͸¦ ÀçºÎÆÃÇϱâ Àü¿¡´Â °è¼ÓÇØ¼­ ½Ã½ºÅÛÀÇ ÀÚ¿øÀ» Àâ¾Æ¸Ô±â ¶§¹®¿¡ ½Ã½ºÅÛÀ» ´À·ÁÁö°ÔÇÏ´Â ¿øÀÎÀÌ µÉ ¼ö ÀÖÁÒ. ÀÚ¹Ù¿¡¼­´Â ¹°·Ð ±×·± ÀÏÀÌ ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù. ÀÚ¹Ù ¹öÃß¾ó ¸Ó½Å(java.exe)À» ÅëÇØ¼­ ½ÇÇàÀÌ µÇ±â ¶§¹®¿¡ java.exe°¡ ½ÇÇàÀ» ÁßÁöÇÏ¸é ¸ðµç ÀÚ¿øÀº ÀÚµ¿À¸·Î ¹ÝȯµÇ±â ¶§¹®ÀÔ´Ï´Ù. ÇÏÁö¸¸ C¿Í °°Àº ÇÁ·Î±×·¥¿¡¼­´Â ¿¹¿Ü»óȲ¿¡¼­ ÀûÀýÈ÷ ÀÚ¿øÀ» ¹ÝÈ¯ÇØÁÖÁö¾ÊÀ¸¸é ¾Õ¿¡¼­ ¼³¸íÇÑ ÀÏÀÌ ¹ß»ýÇÏ°Ô µË´Ï´Ù.

¾Æ¹«Æ° ¿¹¿Ü »óȲÀ» Àâ¾ÆÁÖ´Â °ÍÀº ÇÁ·Î±×·¥ÀÇ ½Å·Ú¼ºÀ» ³ôÀ̴µ¥¿¡ ¸Å¿ì Áß¿äÇÕ´Ï´Ù. ¼ÒÄÏÀ» ¸¸µé ¼ö ¾øÀ»¶§´Â ÃÖ¼ÒÇÑ ¼ÒÄÏÀ» ¸¸µé ¼ö ¾ø´Ù´Â ¸Þ½ÃÁö Á¤µµ´Â Ãâ·ÂÇØÁÖ´Â°Ô ÇÁ·Î±×·¡¸ÓÀÇ ´ç¿¬ÇÑ Àǹ«°ÚÁÒ. ÀÌ ¼ÒÄÏ ÇÁ·Î±×·¥(SocketServer.java Socket Client.java)¿¡¼­ ¿¹¿Ü»óȲÀ» ¹ß»ý½Ãų ¼ö ÀÖ´Â ¸Þ¼Òµå´Â Å©°Ô µÎ °¡Áö°¡ ÀÖ½À´Ï´Ù. ù°´Â, 1.¼ÒÄÏÀ» ¸¸µé¶§, ¾Õ¿¡¼­ ¼ÒÄÏÀ» ¸¸µé ¼ö ¾ø´Ù´Â ¿¹¿Ü»óȲÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. µÑ°´Â, 2.µ¥ÀÌÅ͸¦ ÀԷ¹ްųª Ãâ·ÂÇÒ¶§ Áß°£¿¡ ¼ÒÄÏÀÌ ²÷°å°Å³ª ÇÏ´Â »óȲ¿¡¼­ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼­ SocketServer.java / SocketClient.java¿¡¼­´Â °¢°¢ ÃÖ¼ÒÇÑ µÎ °¡Áö ¾¿ÀÇ ¿¹¿Ü󸮸¦ ÇØÁÖ¾î¾ß ÇϰÚÁÒ.

¿¹¿Ü»óȲÀÇ Ã³¸®´Â try ¿Í catch¹®À¸·Î ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. finallyÀ̶ó´Â ¿¹¾à¾îµµ ÀÖÁö¸¸ À̰ÍÀº ¿©±â¼­ »ý·«Çϱâ·Î ÇÏÁÒ. »ç¿ë ¹æ¹ýÀº C¿¡¼­¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÕ´Ï´Ù. ¿¹¿Ü»óȲÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¸Þ¼Òµå¸¦ try { }·Î °¨½Î°í¼­ ¿¹¿Ü»óȲÀº catch¿¡¼­ Àâ¾Æ¼­ ó¸®ÇÏ´Â °ÍÀÔ´Ï´Ù. Á÷Á¢ Äڵ带 ¸¸µé¾î º¾½Ã´Ù.


public static void main(String args[]) {
   try {
      // ¾Æ±î ±× ³»¿ëµé....
   } catch (IOException e) {
      System.out.println("ExceptionÀÌ ¹ß»ýÇß½À´Ï´Ù.");
   }
}

ÀÌ·¸°Ô ÇÏ¸é µË´Ï´Ù. IOExceptionÀº ¿©·¯ °¡Áö ¿¹¿Ü»óȲÁß IO(Input/Output)¿¡ °ü°èµÈ ¿¹¿Ü»óȲÀ» Àâ¾Æ³»¶ó´Â ÀǹÌÀÔ´Ï´Ù. ½ºÆ®¸²ÀÌ´Ï±î ¿¹¿Ü»óȲÀº IO¿¡ °ü°èµÈ °ÍÀ̰ÚÁÒ. ÀÌ·¯¸é ½ÇÇàÀ» ÁÖ-¿í ÇÏ´Ù°¡ ¹º°¡ ¿¹¿Ü»óȲÀÌ ¹ß»ýÇϸé catch´ÙÀ½¿¡ ÀÖ´Â ¹®ÀåÀ» ½ÇÇàÇÏ°í ³Ñ¾î°£´Ù´Â ÀǹÌÀÔ´Ï´Ù. ¿©±â¼­´Â "ExceptionÀÌ ¹ß»ýÇß½À´Ï´Ù."¶ó´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϰÚÁÒ.

 

¹°·Ð ÀÌ·¸°Ô Çϸé Àß µ¹¾Æ°¡Áö¸¸ ÀÌ»óÀûÀÎ ¿¹¿Ü󸮶ó°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù. ¿Ö³Ä¸é ¿¹¿Ü»óȲÀ» ¹ß»ýÇÒ ¼ö ÀÖ´Â ºÎºÐÀº µÎ ºÎºÐÀε¥, ±×³É ÀüüÀûÀ¸·Î try catch·Î ¹­¾î¹ö·Á¼­ ¾î´À °÷¿¡¼­ ¿¹¿Ü»óȲÀÌ ¹ß»ýµÇ´õ¶óµµ ±×³É "Exc.."¶ó´Â ¸Þ½ÃÁö¸¸ Ãâ·ÂÇÏ°í ³¡³»¹ö·Á¼­, »ç¿ëÀÚ´Â µµ´ëü ¾î´À ºÎºÐ¿¡¼­ ¿¹¿Ü»óȲÀÌ ¹ß»ýÇß´ÂÁö¸¦ ¾Ë ¼ö ¾ø´Ù´Â Á¡ÀÔ´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ÇÁ·Î±×·¡¸Ó´Â ÄÚµå Áß ¾îµð°¡ Ʋ·È´ÂÁö ¾Ë ¼ö ¾ø°í, ¶Ç´Â »ç¿ëÀÚ´Â ÀÚ½ÅÀÌ ¹» À߸øÇß´ÂÁö¸¦ ¾Ë ¼ö°¡ ¾ø°ÚÁÒ. µû¶ó¼­ °¡Àå ÀÌ»óÀûÀÎ ¹æ¹ýÀº try - catch¸¦ ¿¹¿Ü¸¦ ¹ß»ýÇÒ ¼ö ÀÖ´Â ºÎºÐµé¿¡¼­ °¢°¢ ½áÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¾î¶² ºÎºÐ¿¡¼­ ¿¹¿Ü »óȲÀÌ ¹ß»ýÇß´ÂÁö¸¦ ¾Ë ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

 

//SocketClient.java
import java.io.*;    // Stream, Reader, Writer¸¦ »ç¿ëÇϱâ À§ÇØ
import java.net.*;   // SocketÀ» »ç¿ëÇϱâ À§ÇØ
 
public class SocketClient {
 
  public static void main(String args[]) {
 
    OutputStreamWriter osw=null;
 
    try {
      osw=new OutputStreamWriter(new Socket("127.0.0.1",5777).getOutputStream());
    } catch (IOException e) {
      System.out.println("¼ÒÄÏÀ» ¸¸µå´Â µ¥¿¡ ½ÇÆÐÇß½À´Ï´Ù.");
      System.exit(-1);
    }

    String str="0123456789";

    try {
      osw.write(str,0,10);
      osw.flush();
    } catch (IOException e) {
      System.out.println("µ¥ÀÌÅÍ Àü¼Û¿¡ ½ÇÆÐÇß½À´Ï´Ù.");
    } 

    try {
      osw.close();
    } catch (IOException e) {
      System.out.println("¼ÒÄÏÀ» ´Ý´Âµ¥ ½ÇÆÐÇß½À´Ï´Ù.");
    }
  }
}

ÀÌÁ¦´Â ¿ÏÀüÇÑ ÇÁ·Î±×·¥ÀÌ ÀÛ¼ºµÇ¾ú½À´Ï´Ù. ¸·»ó ÄÚµùÇØº¸´Ï ¿¹¿Ü»óȲ(exception)ÀÌ µÎ ºÎºÐÀÌ ¾Æ´Ï¶ó ¼¼ ºÎºÐ¿¡¼­ ¹ß»ýÇÒ ¼ö ÀÖ±º¿ä. ¼ÒÄÏÀ» ´Ý´Â ºÎºÐµµ »ý°¢À» ÇØ¾ß ÇϰÚÁÒ. ù¹øÂ° ¿¹¿Ü󸮿¡¼­ System.exit(-1);Àº ÇÁ·Î±×·¥À» Á¾·áÇ϶ó´Â ÀǹÌÀÔ´Ï´Ù. ¼ÒÄÏÀÌ »ý¼ºµÇÁö ¾Ê¾Ò´Ù¸é µÚ¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ´Â ºÎºÐÀ̳ª ¼ÒÄÏÀ» ´Ý´Â ºÎºÐÀÌ ÀüºÎ Àǹ̰¡ ¾ø´Â ÀÏÀÌ µÇ°ÚÁÒ. µû¶ó¼­ ¼ÒÄÏÀÌ »ý¼ºµÇÁö ¾Ê¾Ò´Ù¸é ÇÁ·Î±×·¥À» Á¾·áÇÏ´Â °ÍÀÌ ÁÁ°ÚÁÒ.

¼­¹öÂÊÀº °¢ÀÚ°¡ ÀÛ¼ºÇØ º¼ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. Ŭ·¡½º¸¦ ¸¸µé¾î¼­ Àû´çÇÑ ÆÐŰÁö¸¦ importÇÏ°í ¿¹¿Ü󸮸¸ ÇØÁÖ¸é ¼­¹öµµ Àß ÀÛµ¿µÉ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

±×¸®°í³ª¼­ ¿©·¯ °¡Áö »óȲÀ» Ã¼Å©ÇØº¸¼¼¿ä.

 - ¼­¹ö¸¦ µ¹¸®Áö ¾Ê´Â »óȲ¿¡¼­ Ŭ¶óÀÌ¾ðÆ®¸¸ ½ÇÇàÇØº¸±âµµ Çϰí,
 - ¼­¹ö¸¦ Çϳª µ¹¸®°í, ¶È°°Àº Æ÷Æ®¸¦ »ç¿ëÇÏ´Â ¼­¹ö¸¦ ÇÑ ¹ø ´õ ½ÇÇàÇØº¸¼¼¿ä.

 

5) ÁøÂ¥·Î ¸¸µé¾îº¸±â

¾Õ¿¡¼­ µåµð¾î ¿ÏÀüÈ÷ µ¿ÀÛÇÏ´Â ¼ÒÄÏ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿´½À´Ï´Ù. ¼­·Î ¿ÏÀüÈ÷ µ¶¸³ÀûÀÎ µÎ ÇÁ·Î±×·¥ÀÌ ¼­·Î Åë½ÅÀ» ÇÏ´Â °ÍÀÌ ´ë´ÜÈ÷ ½Å±âÇÏÁÒ? »ç½Ç ÇÁ·Î±×·¡¹Ö¿¡¼­ Á¦ÀÏ Àç¹ÌÀÖ´Â ºÎºÐÀº À©µµ¿ì ÇÁ·Î±×·¡¹Ö(swing, awt)ÇÏ°í ¼ÒÄÏ ÇÁ·Î±×·¡¹ÖÀÎ °Í °°½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ·¸°Ô ¸¸µé¸é »ç½Ç µ¿ÀÛÀº ÇϰÚÁö¸¸, °´Ã¼ÁöÇâ¾ð¾îÀÎ ÀÚ¹Ù ÇÁ·Î±×·¥À̶ó°í ¸»Çϱâ Èûµé°ÚÁÒ.

¿Ö³Ä¸é ÀÏ´Ü Å¬·¡½º¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò½À´Ï´Ù. Ŭ·¡½º´Â »ç½Ç main¸Þ¼Òµå¸¦ »ç¿ëÇÏ·Á°í ±×³É ½áÁØ °Í »ÓÀÌÁö, ¸¸µé¾î³õÀº Ŭ·¡½º¸¦ ¾îµð¿¡¼­µµ »ç¿ëÇÏÁö ¾Ê¾Æ¼­, »ç½Ç CÇÁ·Î±×·¥°ú º°·Î ´Þ¶ó º¸ÀÌÁö ¾Ê½À´Ï´Ù. ±×·¡µµ °´Ã¼ÁöÇâ¾ð¾îÀε¥ ÀÚÁ¸½ÉÀÌ ÀÖÁö...

Ŭ·¡½º¸¦ Á¦´ë·Î ±¸ÇöÇÏÁö ¸øÇÑ ÀÌ ÇÁ·Î±×·¥Àº Ŭ·¡½ºÀÇ ÀåÁ¡µéÀ» »ç¿ëÇÒ ¼ö ¾øÀ½À» ÀǹÌÇÕ´Ï´Ù. ´Ù¸¥ Ŭ·¡½º¿¡¼­ »ç¿ëÇÏ´Â °ÍÀº ¿ÏÀüÈ÷ ºÒ°¡´ÉÇÕ´Ï´Ù.

±×·³ °úÁ¦·Î »ý°¢Çϰí, Á¦´ë·ÎµÈ °´Ã¼ÁöÇâ ¹æ½Ä¿¡ ÀÇÇØ ÇÁ·Î±×·¡¹ÖÀ» ÇØº¸¼¼¿ä. ±× ÇÑ ¿¹°¡ óÀ½¿¡ Á¦½ÃÇß´ø SocketServer.java / SocketClient.java°¡ µÉ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÇÑ ¹ø ÇØº¸´Ù°¡ Àß ¾ÈµÇ¸é Á¦°¡ ÀÛ¼ºÇÑ ÇÁ·Î±×·¥À» Âü°íÇØ¼­ ¹Ýµå½Ã Á÷Á¢ ÄÚµùÇØº¸¼¼¿ä.

 

 

 

ÇÁ·ÎÁ§Æ® 2. °è»ê±â ÇÁ·Î±×·¥


À̹ø¿¡ ÀÛ¼ºÇÒ ÇÁ·Î±×·¥Àº °è»ê±â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡¼­ µÎ Á¤¼ö(int)¿Í ¿¬»êÀÚ(+,-,*,/)¸¦ º¸³»¸é ¼­¹ö¿¡¼­ ¹Þ¾Æ¼­ °è»êÇÑ ÈÄ °á°ú°ªÀ» Ŭ¶óÀÌ¾ðÆ®¿¡ º¸³»´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¾ÕÀÇ ÇÁ·Î±×·¥°ú´Â Â÷À̰¡ ÀÖ½À´Ï´Ù.

  - ¾ÕÀÇ ÇÁ·Î±×·¥¿¡¼­ ÇϳªÀÇ ³»¿ëÀÌ Àü¼ÛµÇ°í ³ª¸é ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®°¡ Á¾·áµÇ¾úÁö¸¸,

    À̹ø ÇÁ·Î±×·¥¿¡¼­´Â ÇϳªÀÇ °è»êÀÌ ÀÔ·ÂµÇ°í ³ª¼­µµ ¼­¹ö´Â °è¼ÓÇØ¼­ Ŭ¶óÀ̾ðÆ®ÀÇ ÀÔ·ÂÀ»

    ±â´Ù¸®°Ô µË´Ï´Ù. À̰ÍÀº ÇϳªÀÇ ¼­¹ö¿¡ ¿©·¯ Å¬¶óÀÌ¾ðÆ®°¡ Á¢¼ÓÇÒ ¼öµµ ÀÖÀ½À» ÀǹÌÇÕ´Ï´Ù.

  - ÀϹæÀûÀ¸·Î Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö·Î Àü¼ÛÀ» ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, Ŭ¶óÀÌ¾ðÆ®´Â ¼­¹ö¿¡ ¸í·ÉÀ» ÀÔ·Â

     ÇÏ°í ³ª¼­ ¼­¹ö·ÎºÎÅÍÀÇ °á°ú¸¦ ±â´Ù¸®°Ô µË´Ï´Ù.
  - ÀԷ¹ÞÀº ³»¿ëÀ» ±×´ë·Î Ãâ·ÂÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ¾î´À °ÍÀÌ ¼öÀÌ°í ¾î´À °ÍÀÌ ¿¬»êÀÚÀÎÁö¸¦

     ±¸º°Çؾ߸¸ ÇÑ´Ù.

 

À̹ø ÇÁ·ÎÁ§Æ®¿¡¼­´Â ¼¼ °¡Áö¸¦ ¹è¿ì°Ô µË´Ï´Ù.

 - ÇÁ·ÎÅäÄÝÀ» ±¸¼ºÇÏ´Â ¹æ¹ý
 - ´Ù¸¥ Á¾·ùÀÇ Reader¿Í Writer / TokenizerÀÇ »ç¿ë
 - Àü¼Û°ú ¼ö½ÅÀ» µ¿½Ã¿¡ ÇÏ´Â °Í
 - ¼­¹ö¿¡¼­ ¾²·¹µå¸¦ »ç¿ëÇÏ¿© °è¼ÓÇØ¼­ ¿¬°áÀ» ±â´Ù¸®´Â °Í
 - ¼ÒÄÏÀÇ ¿¬°áÀÌ ²÷¾îÁ³À»¶§ ¼­¹ö¿¡¼­µµ ¼ÒÄÏ ¿¬°áÀ» ²÷´Â °Í

1) ÇÁ·ÎÅäÄÝÀÇ Á¤ÀÇ

¸ÕÀú, Åë½Å±Ô¾à(ÇÁ·ÎÅäÄÝ)À» ¸ÕÀú Á¤ÀÇÇØº¾½Ã´Ù. TCP/IP³ª Netbeui°°Àº °ÍµéÀ» ÇÁ·ÎÅäÄÝÀ̶ó°í ÇÕ´Ï´Ù. ÇÁ·ÎÅäÄÝÀº º¸³»´Â Ãø°ú ¹Þ´Â Ãø¿¡¼­ ¹Ì¸® ¾à¼ÓÇÑ ÀÏÁ¤ÇÑ Çü½Ä °°Àº °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ¹°·Ð ¿ì¸®°¡ Á¤ÀÇÇÑ ÇÁ·ÎÅäÄÝÀÌ TCP/IP°°Àº ¼öÁØÀº ¾Æ´ÏÁö¸¸ ¾Æ¹«Æ° ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®°¡ ¾î¶°ÇÑ Çü½ÄÀ¸·Î ¼­·Î¸¦ ±¸ºÐÇÒ °ÍÀÎÁö¸¦ ¾à¼ÓÇØ¾ß Çϴϱî ÀÏÁ¾ÀÇ ÇÁ·ÎÅäÄÝÀ̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·ÎÅäÄÝÀ» Àß Á¤ÀÇÇÏ´Â °ÍÀº ¼ÒÄÏ Åë½ÅÀÇ ±âº»ÀÔ´Ï´Ù. ÇÁ·ÎÅäÄÝÀ» ¾ó¸¶³ª Àß Á¤ÀÇÇÏ´À³Ä¿¡ µû¶ó¼­ ÇÁ·Î±×·¡¹ÖÀÌ ´ë´ÜÈ÷ ¾î·Á¿ï ¼öµµ ÀÖ°í, ½¬¿öÁú ¼öµµ ÀÖ½À´Ï´Ù. ÇÁ·ÎÅäÄÝÀ» À߸ø Á¤ÀÇÇϸé ÇÁ·Î±×·¥ Áß¿¡ ÇÁ·ÎÅäÄÝÀ» ¹Ù²Ù¾î¾ß ÇÏ´Â °æ¿ìµµ »ý±æ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì¿¡´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇϰųª ¼ö½ÅÇÏ´Â ºÎºÐÀ» ´Ù½Ã ´Ù ¹Ù²Ù¾îÁÖ¾î¾ß ÇϹǷΠº¸Åë Èûµç ÀÏÀÌ ¾Æ´Ï°ÚÁÒ.

 

¾Æ¹«Æ° ÀÏ´Ü ¾î¶»°Ô ÇØ¾ßÇÒÁö »ý°¢Çغ¾½Ã´Ù. ¼ÒÄÏÀ» ÅëÇØ¼­ º¸³»Áú ÆÐŶ(ÇÑ ¹«´õ±âÀÇ µ¥ÀÌÅÍ)Àº µÎ Á¾·ù°¡ Àֳ׿ä. ¿ì¼±, Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö¿¡ º¸³»´Â °è»êÀ» ¿äûÇÏ´Â ÆÐŶÀÔ´Ï´Ù. ¿©±â¿¡´Â ¿¬»êÀÚ¿Í µÎ Á¤¼ö°¡ µé¾î°¡°ÚÁÒ. ´ÙÀ½Àº, ¼­¹ö¿¡¼­ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô º¸³»´Â °è»ê°á°ú ÀÔ´Ï´Ù. ¿©±â¿¡´Â °á°ú°ª¸¸ µé¾î°¡¸é µÇ°ÚÁÒ...¶ó°í »ý°¢ÇÏ¸é ¾ÈµË´Ï´Ù. exceptionó¸®! À̰ÍÀº ÇÁ·Î±×·¡¸ÓÀÇ ¿¹ÀÇÀÔ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ¿äûÇÑ °ªÀÌ À߸øµÇ¾úÀ» °æ¿ì, ¿¹¸¦ µé¾î Á¤¼ö°¡ ¾Æ´Ñ ¹®ÀÚ³ª ¼Ò¼ö¸¦ ÀÔ·ÂÇ߰ųª, Á¤¼ö°¡ µÎ °³°¡ µÇÁö ¾Ê¾ÒÀ»¶§, ¾Ë ¼ö ¾ø´Â ¿¬»êÀÚ¸¦ º¸³ÂÀ» ¶§, 0À¸·Î ³ª´©·Á°í ÇßÀ»¶§... µîµîÀÇ °æ¿ì¿¡ ¼­¹ö´Â ¿äûÇÑ °è»êÀÌ À߸øµÇ¾ú´Ù°í ¿¡·¯¸Þ½ÃÁö¸¦ º¸³¾ ¼ö ÀÖ¾î¾ß ÇϰÚÁÒ.

Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö¿¡ º¸³»´Â °ÍÀº ¿¬»êÀÚ¿Í µÎ Á¤¼öÀÔ´Ï´Ù. ¿¬»êÀÚ¿¡´Â +,-,*,/ ³× Á¾·ù°¡ ÀÖÁÒ. ÇÁ·ÎÅäÄÝÀ» ±¸¼ºÇÏ´Â ¹æ¹ýÀº º¸Åë ¸¹ÀÌ ¾²´Â °ÍÀÌ ÅäÅ«ÀÇ Áß°£ Áß°£¿¡ ±¸ºÐÀÚ¸¦ ³Ö°Å³ª, ¾Æ´Ï¸é ÇϳªÀÇ ÅäÅ«ÀÌ ÀÏÁ¤ÇÑ ¼öÀÇ byte¸¦ Â÷ÁöÇÏ°Ô ÇÏ´Â °ÍÀÔ´Ï´Ù.

ºÐ¸®ÀÚ¸¦ ÀÌ¿ëÇÑ ÅäÅ«ÀÇ ±¸¼º¿¹: +:123:456:\


 

ÀÌ °æ¿ì¿¡´Â ÆÐŶÀÇ Å©±â¸¦ ¾Ë ¼ö ¾ø±â ¶§¹®¿¡ ÆÐŶÀÇ ³¡¿¡ Àû´çÇÑ ¹®ÀÚ·Î ³¡ÀÓÀ» ¾Ë·ÁÁÖ´Â ¹®ÀÚ¸¦ ³Ö¾î¾ß ÇÕ´Ï´Ù. Áö±ÝÀº \¸¦ »ç¿ëÇß½À´Ï´Ù. ¸¸¾à ¹®ÀåÀÇ ³¡À» ³ªÅ¸³»´Â ¹®ÀÚ³ª ºÐ¸®ÀÚ(Delemeter)¸¦ 1À̳ª 2°°Àº ¼ýÀÚ·Î ¾´´Ù¸é ¾î¶³±î¿ä? ¾Æ¸¶ ÁøÂ¥¼ýÀÚ¸¦ ºÐ¸®ÀÚ³ª ÆÐŶÀÇ ³¡À¸·Î Âø°¢ÇÏ´Â °æ¿ì°¡ »ý±æ °ÍÀÔ´Ï´Ù. µû¶ó¼­ ½ÇÁ¦ µ¥ÀÌÅÍ ¼Ó¿¡´Â Æ÷Ç﵃ ¼ö ¾ø´Â ¹®ÀÚ¸¦ »ç¿ëÇÏ¿© ºÐ¸®ÀÚ·Î »ç¿ëÇØ¾ß ÇϰÚÁö¿ä. Áö±ÝÀº :°¡ ºÐ¸®ÀÚÀÔ´Ï´Ù. ÆÐŶÀ» ¹Þ´Â °è»ê±â¼­¹ö¿¡¼­´Â \°¡ ³ªÅ¸³¯¶§ ±îÁö Çϳª¾¿ ÀÐÀº ´ÙÀ½, ÀÐÀº µ¥ÀÌÅ͸¦ :¸¦ ±âÁØÀ¸·Î ²÷¾îÁÖ¾î¾ß ÇϰÚÁÒ.

ÀÏÁ¤ÇÑ °ø°£À» Â÷ÁöÇÏ°Ô ÇÏ´Â ¿¹:+ 0123 0456

 


 

ÀÌ °æ¿ì¿¡´Â Å©±â¸¦ Á¤È®È÷ ¾Ë ¼ö Àֱ⠶§¹®¿¡ ºÐ¸®ÀÚ³ª ÆÐŶÀÇ ³¡À» ³ªÅ¸³»´Â ¹®ÀÚ µîÀº µ¡ºÙÀÏ Çʿ䰡 ¾ø½À´Ï´Ù. ¹Þ´Â ÂÊ¿¡¼­´Â ù¹øÂ° ±ÛÀÚ´Â ¿¬»êÀÚÀ̰í, ´ÙÀ½ ³×±ÛÀÚ´Â ¼ýÀÚ, ´ÙÀ½ ³× ±ÛÀÚ´Â ´ÙÀ½ ¼ýÀÚ¶ó´Â °ÍÀ» ¹Ù·Î ¾Ë ¼ö°¡ ÀÖÁÒ. ÇÏÁö¸¸, ÀÌ·¸°Ô ÇÏ¸é ³ªÁß¿¡ 4ÀÚ¸®¼ö ÀÌ»óÀ» Â÷ÁöÇÏ´Â °è»ê±â ÇÁ·Î±×·¥À¸·Î ¹Ù²Ù±â À§Çؼ­´Â ÇÁ·ÎÅäÄÝÀ» ´Ù½Ã Á¤ÀÇÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù. ¶ÇÇÑ °æ¿ì¿¡ µû¶ó¼­´Â °ø°£ÀÇ ³¶ºñµµ ¾ÆÁÖ ½ÉÇÕ´Ï´Ù. 1À» ³ªÅ¸³»±â À§Çؼ­µµ 4ÀÚ¸®¸¦ »ç¿ëÇØ¾ß ÇϹǷΠ±×¸¸Å­ µ¥ÀÌÅÍÀÇ ¾çµµ ¸¹¾ÆÁö°í Àü¼Û ¼Óµµµµ ´À·ÁÁö°ÚÁÒ.

 

ÇÁ·ÎÅäÄÝÀ» ±¸¼ºÇϱâ À§Çؼ­´Â ¿©·¯ °¡Áö¸¦ °í·ÁÇØ¾ß ÇÕ´Ï´Ù. ¿ì¼± »ç¿ëÇÏ´Â ¾ð¾î¿¡¼­ ±¸Çö °¡´ÉÇØ¾ß Çϰí, ¾ð¾î¿¡¼­ Áö¿øÇÏ´Â ±â´Éµé·Î ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖ¾î¾ß Çϸç, °°Àº ³»¿ëÀ» ³ªÅ¸³»±â À§Çؼ­ ÆÐŶÀÇ Å©±â°¡ ³Ê¹« Ä¿ÁöÁö ¾Ê¾Æ¾ß Çϸç, µ¡ºÙ¿© ÀÌÈÄÀÇ È®À强±îÁöµµ °í·ÁÇØ¾ß ÇÕ´Ï´Ù. ¾Õ¼­ ¾ê±âÇßµíÀÌ ÇÁ·ÎÅäÄÝÀ» Àß Á¤ÀÇÇÏ°í ³ª¸é ¾ÕÀ¸·ÎÀÇ °æ·Î°¡ ¼øÅºÇØÁö´Â °ÍÀÌÁÒ.

»ç½Ç ÀÌ ÇÁ·ÎÁ§Æ®¿¡ °¡Àå ÀûÇÕÇÑ ÇÁ·ÎÅäÄÝÀº ÇÁ·ÎÁ§Æ®1¿¡¼­ »ç¿ëÇß´ø °ÍÀÔ´Ï´Ù. InputStreamReader¿Í OutputStreamWriter¿¡¼­´Â ±âº»ÀûÀ¸·Î Á¤¼ö¸¦ ±âº»À¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ°í ¼ö½ÅÇÏ´Â ¸Þ¼ÒµåµéÀÌ ÀÖ½À´Ï´Ù. µû¶ó¼­ ¾Õ¿¡ ¿¬»êÀÚ¸¦ º¸³»°í, ´ÙÀ½¿£ ±×³É µÎ Á¤¼ö(int)¸¦ Àü¼ÛÇÏ¸é ¹Þ´Â ÂÊ¿¡¼­µµ ¸¶Âù°¡Áö·Î ¹Þ´Â °ÍÀº read()¿Í write()¸Þ¼Òµå·Î °£´ÜÈ÷ ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹Ù·Î Á¤¼ö·Î Àü¼ÛÇϱ⠶§¹®¿¡ ±×´ë·Î µ¥ÀÌÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸, À§ÀÇ µÎ ¹æ½ÄÀº ¹ÞÀ»¶§ ¹®ÀÚ¿­(String)·Î ¹Þ¾Æ¾ß Çϱ⠶§¹®¿¡ ÀÌ°Íµé ´Ù½Ã Á¤¼ö(int)·Î ¹Ù²Ù¾îÁÖ´Â °úÁ¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

±×·¯³ª À̹ø ÇÁ·ÎÁ§Æ®¿¡¼­´Â ù¹øÂ°ÀÇ delemeter¸¦ »ç¿ëÇÏ´Â ¹æ½ÄÀ» »ç¿ëÇϵµ·Ï ÇϰڽÀ´Ï´Ù. °¡Àå ¸¹ÀÌ ¾²ÀÌ´Â ¹æ½ÄÀ̱⠶§¹®ÀÏ »Ó´õ·¯, ÀÚ¹Ù¿¡¼­ Á¦°øÇÏ´Â StringTokenizer¿Í BufferedReader(Writer)¸¦ »ç¿ëÇØº¸±â À§Çؼ­ÀÔ´Ï´Ù. ÀÚ¹Ù¿¡¼­´Â ºÐ¸®ÀÚ¿¡¼­ ÅäÅ«À» ºÐ¸®Çس»´Âµ¥¿¡ StringTokenizer¶ó´Â Ŭ·¡½º¸¦ »ç¿ëÇÏ¸é ¾ÆÁÖ °£´ÜÈ÷ ±¸ÇöÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ¶ÇÇÑ BufferedReader´Â InputStreamReader¿Í ´Ù¸£°Ô ÇÑ ¶óÀÎÀ» ÀÐÀ» ¼ö ÀÖ´Â ±â´É(readLine())À» Á¦°øÇϱ⠶§¹®¿¡, ¾ÆÁÖ Æí¸®ÇÕ´Ï´Ù. ¶ÇÇÑ ´Ù¸¥ ¾ð¾î¿ÍÀÇ Åë½Å¿¡¼­ InputStreamReader¿Í OutputStreamWriter´Â ÇѱÛ󸮿¡¼­ °¡²û ¹®Á¦°¡ ¹ß»ýÇϴµ¥¿¡ ¹ÝÇØ, BufferedReader(Writer)´Â ÇѱÛ󸮿¡ ´ë´ÜÈ÷ À¯¸®ÇÕ´Ï´Ù.

Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö¿¡ º¸³¾¶§, ºÐ¸®ÀÚ´Â À§¿¡¼­¿Í °°ÀÌ ':'¸¦ »ç¿ëÇϵµ·Ï ÇϰڽÀ´Ï´Ù. ±×¸®°í ÆÐŶÀº ÇѶóÀÎ ´ÜÀ§·Î º¸³»¸é ¹Þ´Â ÂÊ¿¡¼­ readLine()À» ÀÌ¿ëÇÏ¿© ¹ÞÀ¸¸é µÇ°ÚÁÒ. "¿¬»êÀÚ:Á¤¼ö:Á¤¼ö" ÀÇ ¼ø¼­·Î º¸³»¸é µÉ °Í °°³×¿ä.

¼­¹ö¿¡¼­µµ ºÐ¸®ÀÚ :¸¦ »ç¿ëÇÕ´Ï´Ù. ¼º°ø(s)ÀÎÁö ½ÇÆÐÀÎÁö(f)¸¦ ¸ÕÀú º¸³»°í, ´ÙÀ½¿¡´Â ¼º°øÀÌ¸é °á°ú°ªÀ» ½ÇÆÐÀÌ¸é ¿¡·¯¸Þ½ÃÁö¸¦ º¸³»µµ·Ï ÇÕ´Ï´Ù. Áï, ¼º°øÀ̸é "s:°á°ú°ª", ½ÇÆÐÀ̸é "f:¿¡·¯¸Þ½ÃÁö"ÀÇ Çü½ÄÀÌ µÇ°ÚÁÒ.

 

 

2) Ŭ·¡½º ¼³°è1 : Ŭ¶óÀ̾ðÆ®

Ŭ¶óÀÌ¾ðÆ® ºÎºÐÀº ¾Õ¿¡¼­ ÇÁ·ÎÁ§Æ®1°ú º°¹Ý ´Ù¸£Áö ¾Ê½À´Ï´Ù. ¼ÒÄÏÀ» ¿¬°áÇÏ´Â ºÎºÐÀº ¿ÏÀüÈ÷ µ¿ÀÏÇϰí, ´ÜÁö ÆÐŶÀ» º¸³½ ´ÙÀ½ ´Ù½Ã ¼­¹ö¿¡¼­ º¸³½ ÆÐŶ(°á°ú°ª)À» ¼ö½ÅÇÏ´Â ºÎºÐÀÌ Ãß°¡µÉ »ÓÀÔ´Ï´Ù. À̹ø ÇÁ·ÎÁ§Æ®¿¡¼­´Â ¾Õ¿¡¼­¿Í °°ÀÌ ´ëÃæ ±â´É¸¸À» ±¸ÇöÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÃÖ´ëÇÑ Å¬·¡½º¸¦ È¿À²ÀûÀ¸·Î ¼³°èÇØº¸µµ·Ï ÇϰڽÀ´Ï´Ù. ÇÁ·ÎÁ§Æ®1¿¡¼­ Ŭ·¡½º ¼³°è¸¦ ´Ù½Ã ÇØ¼­ ÇÑ ¹ø ÀÛ¼ºÇغ¸¶ó°í Çߴµ¥ ±×¸»´ë·Î ½ÇÁ¦·Î ÇÁ·Î±×·¡¹ÖÀ» ÇØº¸¾Ò´Ù¸é, À̹ø ÇÁ·ÎÁ§Æ®µµ º°·Î ¾î·ÆÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. Ŭ·¡½ºÀÇ °³³äÀ» ÀÌÇØÇÏ´Â °ÍÀº ¾î·ÆÁö ¾ÊÁö¸¸, ½ÇÁ¦·Î ÇÁ·ÎÁ§Æ®¿¡ Àû¿ëÇÏ´Â µ¥¿¡´Â ÀûÀÝÀº °í¹ÎÀÌ ÇÊ¿äÇÕ´Ï´Ù. ÇÁ·ÎÁ§Æ®1¿¡¼­ Ŭ·¡½º ¼³°è¸¦ ÇØº¸¾Ò´Ù¸é ±×·± °í¹ÎµéÀ» ÇÑ ¹ø ÀÌ»ó¾¿ ÇØº¸¾ÒÀ» °ÍÀ̰í, ¾î¶»°Ô Çϸé È¿À²ÀûÀÎ ¼³°è°¡ µÉÁö ¸¹ÀÌ »ý°¢Çغ¸¾ÒÀ» °ÍÀÔ´Ï´Ù.

Ŭ¶óÀ̾ðÆ®ÀÇ Å¬·¡½º¸¦ ±¸¼ºÇÏ´Â ¹æ¹ýÀº ¿©·¯ °¡Áö°¡ ÀÖ½À´Ï´Ù. ¸ÕÀú »ý¼ºÀÚ¿¡¼­ ¾î¶² ÀÏÀ» ÇØ¾ß ÇÏ´ÂÁö¸¦ »ý°¢Çغ¼ ¼ö ÀÖ½À´Ï´Ù. »ý¼ºÀÚ¿¡¼­ IP¿Í portÀ» ¹Þ¾Æ¼­ ¼ÒÄÏ ¿¬°á±îÁö ¸ðµÎ ÇÏ°Ô ÇÒ ¼ö ÀÖ°í, »ý¼ºÀÚ´Â ¾Æ¹« Àϵµ ÇÏÁö ¾Ê°í ¼ÒÄÏ ¿¬°áÀº ±×°ÍÀ» ´ã´çÇÏ´Â ´Ù¸¥ ¸Þ¼Òµå¸¦ Á¤ÀÇÇØ¼­ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

¶ÇÇÑ °è»êÀ» ´ã´çÇÏ´Â ¸Þ¼Òµå ¶ÇÇÑ ¾î¶»°Ô ÀÎÀÚ¸¦ ¹Þ¾Æ¾ß ÇÏ°í ¾î¶»°Ô ¹ÝȯÀ» ÇÒ °ÍÀÎÁö¸¦ °í·ÁÇØ¾ß ÇÕ´Ï´Ù. µÎ Á¤¼ö¿Í ¿¬»êÀÚ¸¦ ¸ðµÎ StringÀ¸·Î ¹ÞÀ» ¼öµµ ÀÖ°í, µÎ Á¤¼ö´Â Á¤¼ö(int)·Î ¿¬»êÀÚ´Â StringÀ̳ª char·Î ¹ÞÀ» ¼öµµ ÀÖ½À´Ï´Ù. °è»ê °á°ú ¶ÇÇÑ StringÀ¸·Î ¹ÝȯÇÒ ¼öµµ ÀÖ°í, Á¤¼öÇüÀ¸·Î ¹ÝȯÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

Exceptionó¸® ¶ÇÇÑ °í·ÁÀÇ ´ë»óÀÔ´Ï´Ù. ¾îµð¿¡¼­ exceptionÀ» ó¸®ÇÒÁö°¡ ¹®Á¦ÀÔ´Ï´Ù. ¸¸¾à µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ´Â µ¥¿¡ ¹®Á¦°¡ »ý°å´Ù¸é ±×ÀÚ¸®¿¡¼­ ¹Ù·Î ¿¹¿Ü»óȲÀ» ó¸®ÇÒ °ÍÀÎÁö, ¾Æ´Ï¸é ÀÚ½ÅÀ» È£ÃâÇÑ °÷À¸·Î exceptionÀ» ³Ñ°Ü¼­ °Å±â¼­ È£ÃâÇÏ°Ô ÇÒ °ÍÀÎÁö.... ¿©·¯ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.

»ç½Ç Ŭ·¡½º¸¦ Àß ¼³°èÇÏ°íµµ ½ÇÁ¦·Î ÄÚµù¿¡ µé¾î°¡¸é ¼³°èÇÒ¶§ ¹Ìó »ý°¢ÇÏÁö ¸øÇÑ ºÎºÐÀÌ »ý°¢³ª¼­ ¼³°è¸¦ ´Ù½Ã ¼öÁ¤ÇØ¾ß ÇÏ´Â °æ¿ì°¡ ÇÑ µÎ ºÎºÐÀÌ ¾Æ´Ò °ÍÀÔ´Ï´Ù. À̰ÍÀº ¹¹ ÇÁ·Î±×·¡¹ÖÀ» ¸¹ÀÌ ÇØº¸°í Ŭ·¡½º ¼³°è¿¡ Àͼ÷ÇØÁö°í know-how¸¦ ½×¾ÆÇÏ´Â ¹æ¹ý¹Û¿¡´Â ´Þ¸® Áö¸§±æÀÌ ¾ø½À´Ï´Ù. ÇÏÁö¸¸ ºÐ¸íÈ÷ ¸»ÇÒ ¼ö ÀÖ´Â °ÍÀº, Ŭ·¡½º ¼³°è¸¦ °í·ÁÇÏÁö ¾Ê°í Àû´çÈ÷ µÇ´Â´ë·Î ÄÚµùºÎÅÍ ½ÃÀÛÇØ¼­´Â ¾ðÁ¨°¡ ¾î·Á¿ò¿¡ ºÀÂøÇÏ°Ô µÉ °ÍÀ̶ó´Â Á¡ÀÔ´Ï´Ù.

 

 

Example=Sample=...: Á¦°¡ ÇÑ ¼³°è´Â ´ÙÀ½°ú °°½À´Ï´Ù. »ý¼ºÀÚ¿¡¼­´Â ¾Æ¹«·± ÀÏÀ» ÇÏÁö ¾Ê°Ô ÇÏ¿´½À´Ï´Ù. ±×¸®°í ¼ÒÄÏÀ» ¿¬°áÇÏ´Â ¸Þ¼Òµå(void socket_connect())¸¦ µû·Î ¸¸µé¾î¼­ ¿©±â¿¡¼­ Reader¿Í Writer±îÁö Àâ°Ô ÇÏ¿´½À´Ï´Ù. °è»êÀº void calcul(int x, int y, String op)¿¡¼­ ÇÏ°Ô ÇÏ¿´½À´Ï´Ù. º¸´Ù½ÃÇÇ ÀÎÀÚ´Â Á¤¼ö µÎ °³¿Í ¿¬»êÀÚ¸¦ StringÀ¸·Î ³Ö°Ô ÇÏ¿´½À´Ï´Ù. ¹Ýȯ°ªÀº ¾ø½À´Ï´Ù. À̰ÍÀº °á°ú´Â Á¤¼ö·Î ¿¡·¯´Â ¹®ÀÚ¿­·Î ¹ÝȯµÇ¾î¾ß Çϱ⠶§¹®¿¡ °è»êÇÏ´Â ¸Þ¼Òµå¿¡¼­´Â ¹Ýȯ°ªÀ» ÁÖÁö ¾Ê°í, °á°ú´Â int getResult()¸Þ¼Òµå¿¡¼­ ¿¡·¯¸Þ½ÃÁö´Â String getError()¿¡¼­ ¾òÀ» ¼ö ÀÖµµ·Ï ÇÏ¿´½À´Ï´Ù. °è»êÀÌ ¿¡·¯ ¾øÀÌ Àß µÇ¾ú´ÂÁö´Â boolean isSuccess()·Î ¾Ë ¼ö ÀÖ½À´Ï´Ù.

  • public CalculClient(String ServerIP, int port);
  • public void socket_connect();
  • public void calcul(int x, int y, String operator);
  • public boolean isSuccess();
  • public int getResult();
  • public String getError();

°¢°¢ÀÇ ¸Þ¼Òµå¿¡ ´ëÇØ¼­´Â µû·Î ¼³¸íÀÌ ÇÊ¿äÇÏÁö ¾ÊÀ» µíÇÏ´Ù. ¼ÒÄÏ ¿¬°áÀº socket_connect()¿¡¼­ Çϰí, ¼­¹ö¿¡ µ¥ÀÌÅ͸¦ Àü¼ÛÇØ¼­ °á°ú°ªÀ» ¹Þ´Â ÀÏÀº calcul()¸Þ¼Òµå¿¡¼­ ÇÏ°Ô µË´Ï´Ù. À̰ÍÀ» ±¸ÇöÇϱâ À§Çؼ­ ÇÊ¿äÇÑ ÀνºÅϽº(Ŭ·¡½º º¯¼ö)´Â ´ÙÀ½°ú °°´Ù.

  • private int result=0; // °á°ú°ªÀÌ ÀúÀåµË´Ï´Ù.
  • private String error; // ¿¡·¯ ¸Þ½ÃÁö°¡ ÀúÀåµË´Ï´Ù.
  • private boolean success; // °è»êÀÌ ¼º°øÇϸé true, ¿¡·¯°¡ ³ª¸é false
  • private String ip; // ¼­¹öÀÇ IP¸¦ ÀúÀåÇÕ´Ï´Ù.
  • private int port; // ¼ÒÄÏÀÇ Æ÷Æ®¸¦ ÀúÀåÇÕ´Ï´Ù.
  • private Socket socket; // ¼ÒÄÏÀÔ´Ï´Ù.
  • private BufferedReader; // µ¥ÀÌÅ͸¦ ÀÐÀ» ReaderÀÔ´Ï´Ù.
  • private BufferedWriter; // µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ WriterÀÔ´Ï´Ù.

±×¸®°í IOExceptionÀº ¸ðµÎ ÀÚ½ÅÀ» È£ÃâÇÑ °÷¿¡°Ô ´øÁ®ÁÖ±â·Î Çß½À´Ï´Ù. ±× ¹æ¹ýÀº ´ÙÀ½¿¡ ¼³¸íÀ» Çϱâ·Î Çϱ¸¿ä, ¾Æ¹«Æ° socket_connect()³ª calcul()µîÀ» È£ÃâÇÏ°í¼­´Â ExceptionÀ» ¹Þ¾Æ¼­ ó¸®ÇÏ´Â ¹®ÀåÀ» ¸¸µé¾îÁÖ¾î¾ß ÇϰÚÁÒ.

¿©±â¼­ isSuccess()¿Í getResult(), getError()¸Þ¼Òµå´Â ¾ÆÁÖ °£´ÜÇϸ®¶ó »ý°¢ÇÕ´Ï´Ù. ±×³É °¢°¢, success, result, error°ªÀ» returnÇØÁֱ⸸ ÇÏ¸é µÇ°ÚÁÒ.

	public boolean isSuccess() {
		return success;
	}
	
	public int getResult() {
		return result;
	}
	
	public String getError() {
		return error;
	}

 

3) Ŭ·¡½ºÀÇ ±¸Çö1: Ŭ¶óÀ̾ðÆ®

Á¤¼ö x, y¿Í ¹®ÀÚ¿­·ÎµÈ ¿¬»êÀÚ(+,-,*,/)¸¦ ÀԷ¹޾Ƽ­ ¼­¹ö¿¡ °è»êÀ» ¿äûÇÏ´Â ÆÐŶÀ» º¸³»°í¼­ °á°ú¸¦ ¹Þ¾Æ¼­ ºÐ¼®ÇÏ´Â ºÎºÐÀ» ÇØº¾½Ã´Ù.

int x, y;¿¡´Â °¢ ¼ö°¡ µé¾î°¥ °ÍÀ̰í, String op¿¡´Â +,-,*,/ ÁßÀÇ Çϳª°¡ µé¾î°¥ °ÍÀÔ´Ï´Ù. ¾Õ¿¡¼­ ¼³°èÇÑ ÆÐŶÀÇ ±¸Á¶¸¦ ±â¾ïÇØ³»º¸¼¼¿ä. 13+24¸¦ °è»êÇϱâ À§Çؼ­´Â " +:13:24: "¶ó´Â ÆÐŶÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ÆÐŶÀº ¾ÆÁÖ °£´ÜÇÏ°Ô ¸¸µé ¼ö Àְڳ׿ä. ±×³É ½ºÆ®¸µ¿¡ ´õÇϱ⸸ ÇÏ¸é µÇ´Ï±î¿ä.

 

String packet=op+":"+x+":"+y+":";

 

op´Â StringÀ̰í ":"µµ StringÀÌ´Ï±î ´õÇÏ´Â °ÍÀÌ ÀÌÇØ°¡ µÇÁö¸¸ ¿©±â¿¡ x¸¦ ´õÇÏ´Â °ÍÀº ¾óÇÍ ÀÌÇØ°¡ µÇÁö ¾Ê½À´Ï´Ù. x´Â Á¤¼öÀε¥ ¹®ÀÚ¿­¿¡ ´õÇϰí ÀÖÀ¸´Ï±î¿ä. ÀÚ¹ÙÀÇ ÀÌ»óÇÑ Á¡ ÁßÀÇ ÇϳªÀε¥, ¾Æ¹«Æ° String¿¡´Â Á¤¼ö(int), ¼Ò¼ö(float)¸¦ ´õÇØµµ StringÀÌ µÇ°í, ½ÉÁö¾î boolean°ªÀ» ´õÇØµµ ±×³É ¹®ÀÚ¿­¿¡ ´õÇØÁý´Ï´Ù. Á» ÀÌ»óÇϱä ÇÏÁö¸¸ ¾Æ¹«Æ° Áö±ÝÀº »ç¿ëÇϱ⿡ ¾ÆÁÖ Æí¸®Çϱº¿ä. ´ÙÀ½¿£ ¸¸µç ÆÐŶÀ» Àü¼ÛÇÑ ´ÙÀ½, °á°ú°ªÀ» ¹Ýȯ ¹Þ´Â °ÍÀ» ÇØº¾½Ã´Ù.

 

bw.write(packet);
bw.newLine();
bw.flush();                                // ÆÐŶÀ» Àü¼ÛÇÑ´Ù.

 

String result=br.readLine();         // °á°ú·Î ¼­¹ö¿¡¼­ ³¯¾Æ¿Â ÆÐŶÀ» ¹Þ´Â´Ù.

 

bw.newLine()°ú bw.flush()°¡ ÇÏ´Â ¿ªÇÒ¿¡ ´ëÇØ¼­´Â Àú¹ø¿¡ ¼³¸íÀ» ÇÏ¿´½À´Ï´Ù. ¼­¹öÂÊ¿¡¼­ ¶óÀÎ ´ÜÀ§·Î Àб⠶§¹®¿¡ ¶óÀÎÀÌ ³¡³µ´Ù´Â Ç¥½Ã¸¦ ÇØÁÖ¾î¾ß Çϰí, ¹öÆÛ¿¡ ½×¾ÆµÐ ÆÐŶÀ» Àü¼ÛÇ϶ó´Â ¸í·ÉÀ» ³»·ÁÁÖ¾î¾ß¸¸ ÇÕ´Ï´Ù.

¼­¹ö¿¡ ÆÐŶÀ» Àü¼ÛÇÑ ´ÙÀ½¿¡ ¹Ù·Î, readLine()À» ½á¼­ °á°ú°ªÀ» ¾ò´Â ±º¿ä. ½ÇÇàÀ» ½Ã۸é bw.flush()±îÁö ½ÇÇàÀ» ÇÏ°í¼­ ¼­¹ö°¡ µ¥ÀÌÅ͸¦ º¸³¾¶§ ±îÁö ±â´Ù¸®´Ù°¡ ¼­¹ö¿¡¼­ ÆÐŶÀ» º¸³»¸é readLine()¿¡¼­ ÇÑ ¶óÀÎÀ» ÀÐ°í¼­´Â ÁøÇàµË´Ï´Ù. ÄÚµå»óÀ¸·Î´Â ºÙ¿©½áÁÖ¾úÁö¸¸, ½ÇÁ¦·Î´Â bw.flush()¿Í br.readLine()»çÀÌ¿¡´Â ¸¹Àº ½Ã°£ÀÌ °É¸®´Â °ÍÀ̰í, ¸¸¾à ¼­¹ö¿¡¼­ µ¥ÀÌÅ͸¦ º¸³»Áö ¾Ê´Â´Ù¸é ÀÌ ºÎºÐ¿¡¼­ Á¤ÁöÇØ ÀÖ°Ô µË´Ï´Ù.

¼­¹ö¿¡¼­ Àü¼ÛÇÑ °á°ú°ª(result)¸¦ ºÐ¼®Çغ¾½Ã´Ù. ¼­¹ö¿¡¼­´Â ¼º°øÇßÀ» °æ¿ì " s:°á°ú°ª ", ½ÇÆÐÇßÀ» °æ¿ì " f:¿¡·¯¸Þ½ÃÁö " ¿Í °°ÀÌ ÆÐŶÀ» º¸³»°Ô µË´Ï´Ù. ¾Õ¿¡¼­ 13+24¶ó´Â ¸Þ½ÃÁö¸¦ º¸³Â´Ù¸é, " s:37"À̶ó´Â ÆÐŶÀÌ ³¯¾Æ¿À°ÚÁÒ. ¸¸¾à 3/0À» °è»êÇ϶ó´Â ÆÐŶÀ» º¸³»¸é "f:0À¸·Î ³ª´­ ¼ö ¾ø½À´Ï´Ù."¶ó´Â ¸Þ½ÃÁö°¡ ³¯¾Æ¿É´Ï´Ù. ±×·¯¸é Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ±×°ÍÀ» ÀûÀýÈ÷ ºÐ¼®Çؼ­ ¼º°øÀÌ¸é °á°ú°ª 37À», ½ÇÆÐÀÌ¸é ¿¡·¯¸Þ½ÃÁö¸¦ ³»º¸³»¸é µË´Ï´Ù.

ÆÐŶÀ» ºÐ¼®Çϱâ À§Çؼ­´Â StringTokenizer¸¦ »ç¿ëÇÕ´Ï´Ù. ÇÁ·ÎÁ§Æ®2¸¦ ½ÃÀÛÇϸ鼭 ÀÌ Å¬·¡½º¸¦ »ç¿ëÇÏ°Ú´Ù°í ¾ê±âÇß´ø °ÍÀÌ ±â¾ï³¯ °ÍÀÔ´Ï´Ù. À̸§ ±×´ë·Î StringÀ» TokenÀ¸·Î ¸¸µé¾îÁÖ´Â ÀÏÀ» ÇÕ´Ï´Ù. tokenÀ̶õ ´Ü¾î¿Í ºñ½ÁÇÑ °ÍÀ̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. Àǹ̸¦ °¡Áö´Â µ¥ÀÌÅÍ ´ÜÀ§´Ï±î¿ä. ¼­¹ö¿¡¼­ ³¯¾Æ¿À´Â ÆÐŶÀº ÅäÅ«À» 2°³ °¡Áö°í ÀÖ½À´Ï´Ù. ¼º°ø(s)ÀÎÁö ½ÇÆÐ(f)ÀÎÁö¸¦ ¶æÇÏ´Â °Í°ú, °á°ú°ª ¶Ç´Â ¿¡·¯¸Þ½ÃÁö ÀÔ´Ï´Ù. "s:37"À̶ó¸é s¿Í 37ÀÌ ÅäÅ«ÀÌ µË´Ï´Ù. StringTokenizer¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. »ý¼ºÀÚ¿¡ ½ºÆ®¸µ°ú ºÐ¸®ÀÚ(Token Delemeter)¸¦ ³Ö¾îÁÖ¸é nextToken()À̶ó´Â ¸Þ¼Òµå·Î ÅäÅ«À» Çϳª¾¿ ºÐ¸®ÇØ ³¾ ¼ö ÀÖ½À´Ï´Ù.


   int re=0;
   String error="";StringTokenizer st=new StringTokenizer(result, ":");
   String success=st.nextToken();

   if ( success.equals("s") ) {

      re=Integer.parseInt(st.nextToken());
   } else {

      error=st.nextToken();

   }

 

¾ÆÁÖ °£´ÜÇÏÁÒ? ½ºÆ®¸µ ÅäÅ©³ªÀÌÀú¸¦ ¸¸µç ´ÙÀ½, ÅäÅ«À» ÇÑ ºÐ¸®Çؼ­ ±×°ÍÀÌ "s"ÀÌ¸é ´ÙÀ½ ÅäÅ«À» ºÐ¸®Çؼ­ Á¤¼ö·Î ¹Ù²Û ´ÙÀ½ °á°ú°ª¿¡ ³Ö°í, "s"°¡ ¾Æ´Ï¸é ´ÙÀ½ ÅäÅ«À» ¿¡·¯¸Þ½ÃÁö¿¡ ³Ö´Â °ÍÀÔ´Ï´Ù.

 

 

4) Ŭ·¡½º ¼³°è2 : ¼­¹ö

 

¼­¹ö ÂÊÀº ¾à°£ ¾î·Æ½À´Ï´Ù. °è¼ÓÇØ¼­ Ŭ¶óÀ̾ðÆ®ÀÇ µ¥ÀÌÅ͸¦ ±â´Ù¸®´Ù°¡ ¹Þ¾Æ¼­ °è»êÀ» ÇÏ´Â ºÎºÐÀÌ Thread¸¦ »ç¿ëÇÏ¿© ±¸ÇöµÇ¾î¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù. ±× ÀÌÀ¯´Â thread¸¦ »ç¿ëÇϸé ÇϳªÀÇ ¼­¹ö¿¡ ¿©·¯ °³ÀÇ Å¬¶óÀÌ¾ðÆ®°¡ °¢°¢ µ¶¸³ÀûÀ¸·Î Á¢¼ÓÇÒ ¼ö ÀÖ°í, CPUÁ¡À¯À²À» ÁÙÀÏ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ¾Æ¹«Æ° ±×³É ¼­¹ö Ŭ·¡½º¸¦ ¼³°èÇØº¸ÀÚ°í ¸»ÇÏ¸é ³Ê¹« ÀÜÀÎÇÑ ÀÏÀÌ µÉ °Í °°À¸´Ï±î, ¼­¹ö°¡ µ¹¾Æ°¡´Â ¸ÞÄ«´ÏÁòÀº ÇÔ²² °øºÎÇØº¸°í¼­ ±¸Ã¼ÀûÀΠŬ·¡½ºÀÇ ¼³°è´Â °¢ÀÚ ÇØº¸°í¼­ Ŭ·¡½º ±¸Çö ºÎºÐ¿¡¼­ ÀúÀÇ ¼³°è¿Í ºñ±³Çغ¸µµ·Ï ÇսôÙ.

 

Thread´Â process¿Í ºñ½ÁÇÕ´Ï´Ù. process ¾È¿¡¼­ µ¹¾Æ°¡´Â º°°³ÀÇ process °°Àº °ÍÀÔ´Ï´Ù. À©µµ¿ì³ª ¸®´ª½º, À¯´Ð½º¿Í °°Àº ¸ÖƼŽºÅ· ¿î¿µÃ¼Á¦¿¡¼­ ¿¡¼­ ¿©·¯ °³ÀÇ process°¡ µ¹ ¼ö ÀÖ´Â °Íó·³ ÇϳªÀÇ ÇÁ·Î¼¼½º¿¡¼­µµ ¿©·¯ °³ÀÇ thread°¡ µ¹ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ process¿Í threadÀÇ Â÷ÀÌÁ¡Àº ¹®¸Æ±³È¯(context switching)ÀÌ ÀϾÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù. context¶õ ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ µ¹¾Æ°¡´Â ȯ°æÀ̶ó°í º¼ ¼ö ÀÖ½À´Ï´Ù. º¸Åë ·¹Áö½ºÅÍ º¯¼öµéÀÇ °ªÀ» ¸»Çϴµ¥, ÇϳªÀÇ process´Â ÇϳªÀÇ context¸¦ °¡Áö°Ô µÇ¹Ç·Î, µÎ °³ÀÇ ÇÁ·Î¼¼½º°¡ ¹ø°¥¾Æ ½ÇÇàµÇ±â À§Çؼ­´Â °è¼ÓÇØ¼­ context switchingÀÌ ÀϾ¾ß ÇÕ´Ï´Ù. ±×·¯³ª thread´Â process³»ºÎ¿¡¼­ µ¹±â ¶§¹®¿¡ ¹®¸Æ±³È¯Àº ÀϾÁö ¾Ê½À´Ï´Ù. ¾Æ¹«Æ° ÀÚ¼¼ÇÑ °ÍÀº ¾Ë Çʿ䰡 ¾ø°í ¾Æ¹«Æ° ÇϳªÀÇ ÇÁ·Î±×·¥¿¡¼­ ¿©·¯ °³ÀÇ thread°¡ µ¹¸é¼­ Multi TaskingÀ» ÇÒ ¼ö°¡ ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù.

 


±×·¯³ª ¼­¹öµµ ¼ÒÄÏÀ» ¿­°í -> stream°ú Reader¸¦ ¾ò¾î³½ ÈÄ -> µ¥ÀÌÅ͸¦ Àаí -> °è»êÇÑ °á°ú°ªÀ» Àü¼ÛÇÑ´Ù´Â ±âº» ±¸Á¶´Â º¯ÇÔÀÌ ¾ø½À´Ï´Ù. À̹ø¿¡´Â ÀÌ °úÁ¤ÀÌ °è¼ÓÇØ¼­ ¹Ýº¹µÈ´Ù´Â Á¡ÀÌ ´Ù¸¦ »ÓÀÌÁÒ. ¼­¹öÀ̱⠶§¹®¿¡ °¡Àå ¾Õ ºÎºÐ¿¡ ¼­¹ö¼ÒÄÏÀ» ¸¸µå´Â ºÎºÐÀ» ´õ Ãß°¡ÇØ¾ß ÇÒ °Í °°±º¿ä. ±â¾ïÇϽðÚÁö¸¸, ¼ÒÄÏ ¿¬°áÀº °¡Àå ¸ÕÀú ¼­¹ö ¼ÒÄÏÀ» ¸¸µç ÈÄ, ¿©±â¿¡¼­ ¼ÒÄÏÀ» ¾ò¾î³»°í Ŭ¶óÀÌ¾ðÆ® ÂÊ¿¡¼­´Â ÀÌ ¼ÒÄÏ¿¡ ¿¬°áÀ» ÇÕ´Ï´Ù. ¾Æ¹«Æ° ±âº» ±¸Á¶´Â ºñ½ÁÇÒ Å×´Ï ¼­¹öÂʵµ Ŭ·¡½º ¼³°è¸¦ ÇØº¾½Ã´Ù.

°¡Àå ¸ÕÀú ÇØ¾ßÇÒ ÀÏÀº Àû´çÇÑ Æ÷Æ®¿¡ ¼­¹ö ¼ÒÄÏÀ» ¸¸µå´Â ÀÏÀÔ´Ï´Ù. »ý¼ºÀÚ¿¡¼­ ÇØµµ ÁÁ°í ¸Þ¼Òµå¸¦ Çϳª ¸¸µé¾îµµ ÁÁ½À´Ï´Ù.

 

ServerSocket srvSocket=new ServerSocket(6000);

 

°ú °°Àº ½ÄÀ¸·Î ÇÏ¸é µÇ°ÚÁÒ. ´ÙÀ½¿¡ ÇÒ ÀÏÀº ¼­¹ö ¼ÒÄÏ¿¡¼­ accept()¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼­ Ŭ¶óÀÌ¾ðÆ®¿Í ¿¬°áÇÒ ¼ÒÄÏÀ» ¸¸µå´Â ÀÏÀÔ´Ï´Ù.

 

Socket socket=srvSocket.accept();

 

¿Í °°ÀÌ ÇÏ¸é ¼ÒÄÏÀ» ¿­ ¼ö ÀÖ½À´Ï´Ù. ¿©±â±îÁö´Â ÇÁ·ÎÁ§Æ®1¿¡¼­¿Í °°Áö¸¸, ¿©±â¼­ºÎÅÍ Thread¸¦ »ç¿ëÇÕ´Ï´Ù. ¿©±â¼­ ¸¸µé¾îÁØ ¼ÒÄÏÀ» ÀÎÀÚ·Î ³Ö¾î¼­ Stream°ú Reader, Writer¸¦ ¸¸µå´Â ÀÏÀº Thread¸¦ Çϳª »ý¼ºÇؼ­ ÀÏÀ» ¸Â±â´Â °ÍÀÌÁÒ. ¼­¹ö´Â °è¼ÓÇØ¼­ ´Ù¸¥ Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸®°í, Ŭ¶óÀÌ¾ðÆ®¿ÍÀÇ µ¥ÀÌÅÍ ¼Û¼ö½ÅÀº »ý¼ºµÈ Thread°¡ ¸Ã°Ô µÇ´Â °ÍÀÔ´Ï´Ù.

Áï, ¼­¹ö´Â ¼­¹ö ¼ÒÄÏÀ» ¸¸µé¾î, Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸®´Ù°¡, Ŭ¶óÀÌ¾ðÆ®°¡ ¿¬°áÀÌ µÇ¸é, Thread¸¦ Çϳª »ý¼ºÇؼ­ ¸¸µé¾îÁø socketÀ» ³Ñ°ÜÁÖ°í³ª¼­´Â thread¸¦ ½ÃÀÛ½ÃŰ°í¼­ ´Ù½Ã ´Ù¸¥ Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸®°Ô µË´Ï´Ù. 

Áö±Ý±îÁöÀÇ °úÁ¤À» Á¤¸®ÇØ º¾½Ã´Ù.

 

ServerSocket srv=new ServerSocket(port);      // ¼­¹ö ¼ÒÄÏÀ» ¸¸µì´Ï´Ù. port´Â Æ÷Æ® ¹øÈ£
while (true) {
  Socket socket=srv.accept();         // Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸³´Ï´Ù.
                                                   // ¿¬°áµÇ¸é ´ÙÀ½ÇàÀ¸·Î ÁøÇàµË´Ï´Ù.
  ServerThread t=new ServerThread(socket);  // Thread¸¦ »ý¼º. À̶§ ¼ÒÄÏÀ» ÀÎÀÚ·Î ³Ñ±è.
  t.start();                                      // »ý¼ºµÈ Thread¸¦ ±¸µ¿½Ãŵ´Ï´Ù.
}

 

¼­¹ö Ŭ·¡½º¿¡¼­ ÇÒ ÀÏÀº ÀÌÁ¤µµ°¡ ´ÙÀÔ´Ï´Ù. ¼­¹ö ¼ÒÄÏÀ» ¸¸µé°í¼­´Â, Ŭ¶óÀÌ¾ðÆ® ¼ÒÄÏÀ» ¿¬°áÇØ¼­ Thread¸¦ »ý¼ºÇؼ­ ±¸µ¿½ÃŰ´Â ÀÏÀº ¹«ÇÑ·çÇÁ·Î µ¹°í ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. while (Á¶°Ç) { Ç׸ñ } ¹®Àº °ýÈ£ ¾ÈÀÇ Á¶°ÇÀÌ ¼º¸³µÇ¸é ºí·°À¸·Î ½ÎÀÎ Ç׸ñµéÀÌ °è¼ÓÇØ¼­ ½ÇÇàµÇ´Âµ¥, °ýÈ£ ¾ÈÀÇ Á¶°ÇÀÌ true´Ï±î Àý´ë·Î ³¡³¯ ÀÏÀÌ ¾ø´Â ¹«ÇÑ ·çÇÁ°ÚÁÒ. ¹°·Ð Control-C¸¦ ´©¸£¸é Á¾·áµË´Ï´Ù. ¾Æ¹«Æ° ÀÌ ºÎºÐÀº ¹«ÇÑ ·çÇÁ·Î µ¹°í Àִµ¥, µû¶ó¼­ ¼­¹ö´Â °è¼ÓÇØ¼­ µ¹¸é¼­ Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸®´Ù°¡ Ŭ¶óÀÌ¾ðÆ®°¡ ¿¬°áµÇ¸é socketÀ» ¿¬°áÇϰí Thread¸¦ ¸¸µé¾î¼­ socketÀ» ³Ñ°ÜÁÖ´Â ÀÏÀ» ¹Ýº¹ÇÏ°Ô µÇ°ÚÁÒ. ¹«ÇÑÈ÷ ¸¹Àº Ŭ¶óÀÌ¾ðÆ®µéÀÌ ¿¬°áµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¹Ù°¡ ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö¿¡ °­ÇÑ ÀÌÀ¯ ÁßÀÇ Çϳª°¡ Thread¿¡µµ ÀÖ½À´Ï´Ù. ÇϳªÀÇ ¼­¹ö¿¡ ¸¹Àº Ŭ¶óÀÌ¾ðÆ®µéÀÌ ¿¬°áµÇ´õ¶óµµ À̵éÀ» µû·Î °ü¸®ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ±×³É °¢°¢ º°°³ÀÇ thread¸¦ ¸¸µé¾îÁֱ⸸ Çϸé thread³»¿¡¼­ ¾Ë¾Æ¼­ ÀÏÀ» Çϱ⠶§¹®ÀÔ´Ï´Ù.

 

 

Threadclass¿¡¼­´Â °á°ú°ªÀ» Àü¼ÛÇÑ ÈÄ ´Ù½Ã óÀ½À¸·Î °¡¼­ Ŭ¶óÀ̾ðÆ®ÀÇ µ¥ÀÌÅÍ Àü¼ÛÀ» ±â´Ù¸®°Ô µË´Ï´Ù. ¼­¹ö´Â ·çÇÁ¸¦ µ¹¸é¼­ Ŭ¶óÀÌ¾ðÆ® thread¸¦ ±¸µ¿ÇÑ ÈÄ ´Ù½Ã ´Ù¸¥ Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù·Á, ¿¬°áÀÌ ÀÖ´Ù¸é »õ·Î¿î thread¸¦ ´Ù½Ã »ý¼ºÇÕ´Ï´Ù.

ServerThread´Â ±¸ÇöÇØ¾ß Çϴ Ŭ·¡½ºÀÔ´Ï´Ù. »ç½Ç ¾î·Á¿î ºÎºÐÀº À̺κÐÀÌÁÒ. ¹°·Ð ´Ù¸¥ À̸§À» ½áµµ ÀüÇô »ó°üÀº ¾ø½À´Ï´Ù. ±×·³ ServerThread°¡ ÇØ¾ß ÇÏ´Â ÀÏÀ» ¤¾î º¾½Ã´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¿¬°áµÈ ¼ÒÄÏÀ» ³Ñ°Ü¹Þ¾ÒÀ¸´Ï±î ÀÌ ¼ÒÄÏ¿¡¼­ StreamÀ» ¸¸µé¾î¼­ StreamReader¿Í Writer¸¦ ¸¸µé¾î³»¾ß ÇÕ´Ï´Ù.

InputStream is=socket.getInputStream();
OutputStream os=socket.getOutputStream();

InputStreamReader isr=new InputStreamReader(is);
OutputStreamWriter osw=new OutputStreamWriter(os);

±×·¯³ª ¿ì¸®´Â BufferedReader¿Í BufferedWriter¸¦ »ç¿ëÇϱâ·Î Çß½À´Ï´Ù. ¸¸µé¾î³õÀº InputStreamReader¿Í Writer¸¦ BufferedReader¿Í WriterÀÇ »ý¼ºÀÚ¿¡ ³Ö¾î ÁÖ¸é µË´Ï´Ù.

BufferedReader br=new BufferedReader(isr);
BufferedWriter bw=new BufferedWriter(osw);

is, isr, br / os, osw, bw °°Àº ¸¹Àº º¯¼öµéÀ» ¸¸µé±â ±ÍÂúÀº¸é ±×³É ÇÑ ¹ø¿¡ ³¡³»¹ö¸®´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù.


BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
 


ÀÌÁ¦ ³²Àº ÀÏÀº br.readLine()¿¡¼­ ÆÐŶÀ» Àо °á°ú¸¦ °è»êÇÑ ÈÄ bw.write()¸¦ ÀÌ¿ëÇØ¼­ Àü¼ÛÇϱ⸸ ÇÏ¸é µË´Ï´Ù.

String packet=br.readLine();
String result=analyzePacket(packet); // ÆÐŶÀ» ó¸®ÇÑ´Ù. String result¿¡ °á°ú °ªÀÌ ÀúÀåµÈ´Ù.
bw.write(result);
bw.newLine();
bw.flush();


ÀÌ·¸°Ô Çϰí exception 󸮸¸ ÇÏ¸é »ç½Ç»ó ¼ÒÄÏ ¿¬°á ºÎºÐÀº ¸ðµÎ ³¡³³´Ï´Ù. ³²Àº ÀÛ¾÷Àº ½ÇÁ¦ ÇÁ·Î±×·¡¹Ö¿¡¼­ ¸¹ÀÌ ÇÏ°Ô µÇ´Â ÀÏÀε¥, ¹®ÀÚ¿­(String)·Î ÀÔ·ÂµÈ µ¥ÀÌÅ͸¦ ºÐ¼®ÇÏ¿© Á¤¼ö¿Í ¿¬»êÀÚ·Î ³ª´©°í¼­ °á°ú¸¦ °è»êÇÑ ´ÙÀ½, Ŭ¶óÀÌ¾ðÆ®¿¡ Àü¼ÛÇÒ ÆÐŶÀ» ¸¸µå´Â ÀÏÀÔ´Ï´Ù. ¹Ù·Î analyzePacket()¸Þ¼Òµå¿¡¼­ ÇÒ ÀÏÀÌÁÒ. ¾Õ¿¡¼­ ÇÁ·ÎÅäÄÝÀ» Á¤ÀÇÇϰí, ¼ÒÄÏÀ» Buffered·Î ÇÒ °ÍÀÎÁö ±×³É StreamReader, Writer·Î ÇÒ °ÍÀÎÁö¸¦ °í¹ÎÇß´ø ¹®Á¦´Â ¹Ù·Î ÀÌ ºÎºÐÀ» ½±°ÔÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­¶ó°í ÇØµµ Ʋ¸° ¸»ÀÌ ¾Æ´Õ´Ï´Ù. Áö±ÝÀº µ¥ÀÌÅͰ¡ Àû¾î¼­ ¸¹ÀÌ ¾î·Á¿öÁö°Å³ª ½¬¿öÁöÁö´Â ¾ÊÁö¸¸, µ¥ÀÌÅÍ ·®ÀÌ ¸¹°Å³ª µ¥ÀÌÅÍÀÇ Á¾·ù°¡ ´Ù¾çÇϸé ÇÁ·Î±×·¡¹Ö¿¡¼­ °¡Àå ¾î·Á¿î ºÎºÐÀº ¹Ù·Î ÀÌ ºÎºÐÀÌ µË´Ï´Ù.

 

 

5) Ŭ·¡½º ±¸Çö2: ¼­¹ö µ¥ÀÌÅÍ ¼ö½Å°ú Àü¼Û

¼­¹ö ¼ÒÄÏÀ» ¸¸µé°í Ŭ¶óÀÌ¾ðÆ® ¼ÒÄÏÀ» ¿¬°áÇØ¼­ ¾²·¹µå·Î ¿¬°á½ÃŰ´Â °Í ±îÁö´Â Áö±Ý±îÁö ¼³¸íÀÌ µÇ¾ú´Ù. ÇÑ ¹ø ½ÇÁ¦ ÄÚµù°ú ºñ½ÁÇÏ°Ô ¾Ë°í¸®ÁòÀ» ±×·Áº¸ÀÚ. ¼­¹ö Ŭ·¡½ºÀÎ CalculServer.java¿¡¼­ ÇÒ ÀÏÀº °£´ÜÇÕ´Ï´Ù. ±× ¾Ë°í¸®ÁòÀº ¾Õ¿¡¼­ ¼³¸íÇÏ¿´½À´Ï´Ù. ÇÏÁö¸¸ ¾î¶² ÀÏÀ» ¾î¶² ¸Þ¼Òµå¿¡¼­ ÇØ¾ßÇÏ°í ¹Û¿¡¼­´Â ¾î¶»°Ô È£ÃâÇØÁÙ °ÍÀÎÁö ÇÏ´Â ÀϵéÀº Ŭ·¡½º ¼³°è¿¡¼­ °¢ÀÚ ÇØº¸¾ÒÀ» °ÍÀÔ´Ï´Ù. ±×·³ Á¦°¡ ÇÑ Å¬·¡½º ¼³°è¸¦ º¸¿©µå¸®°Ú½À´Ï´Ù. ¹¹ Ç¥ÁؾÈÀ̶ó°í ÇÒ ¼ö´Â ¾øÀ»Å×´Ï±î ´Ù¸£´õ¶óµµ ³Ê¹« »ó½ÉÇÏÁö´Â ¸¶¼¼¿ä.

// CalculServer.java


public class CalculServer {


  public void socket_connection(int port);    // ¼­¹ö ¼ÒÄÏ »ý¼º
  public void listening();                    // Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸®°í,
                                              // ¿¬°áµÇ¸é thread¸¦ ±¸µ¿
}


class ServerThread extends Thread {
  
  public void run();            // ¼ÒÄÏ¿¡¼­ reader, writer¸¦ ¾ò¾î¼­ µ¥ÀÌÅ͸¦ ¹Þ´Â´Ù.
                                // analyzePacket()À» È£ÃâÇÏ¿© °á°ú¸¦ ¾ò¾î Àü¼ÛÇÑ´Ù.
  public String analyzePacket(String inputPacket);
                                // ÆÐŶ ³»¿ëÀ» ºÐ¼®ÇÏ¿© °è»êÇϰí
                                // Ŭ¶óÀÌ¾ðÆ®¿¡ Àü¼ÛÇÒ ÆÐŶÀ» ¸¸µé¾î ¹ÝȯÇÑ´Ù.

}

ÀÌ·¸°Ô º¸´Ï±î Ŭ¶óÀÌ¾ðÆ® Å¬·¡½ºº¸´Ù ´õ °£´ÜÇϳ׿ä. ÇÏÁö¸¸ ³»¿ëÀº ±×¸® ½±Áö ¾Ê½À´Ï´Ù. analyzePacket()¸Þ¼Òµå¸¦ ±¸ÇöÇÏ´Â °ÍÀÌ ½±Áö°¡ ¾Ê°ÚÁÒ? "+:13:24"¶ó´Â StringÀ» ºÐ¼®Çؼ­ "s:37"À̶ó´Â StringÀ» ¸¸µé¾î³¾ ¼ö ÀÖ¾î¾ß Çϴϱî¿ä.

¾Æ¹«Æ° Ŭ·¡½º µÎ °³·Î ±¸ÇöµÇ¾î Àֳ׿ä. ServerThreadŬ·¡½º´Â CalculServerŬ·¡½º ¾È¿¡ Æ÷ÇÔ µÇ¾îµµ ÁÁ°í Áö±Ýó·³ ¹Û¿¡ ³ª¿ÍÀ־ »ó°ü¾ø½À´Ï´Ù. ÇÏÁö¸¸ publicŬ·¡½º´Â CalculServerŬ·¡½º Çϳª¹Û¿¡ ¾ø¾î¾ß ÇÕ´Ï´Ù. ServerThreadµµ ¾Æ¿¹ ServerThread.java¶ó´Â ´Ù¸¥ È­ÀÏ¿¡ ±¸ÇöÇÏ´Â °ÍÀº »ó°ü¾ø½À´Ï´Ù.

ServerThreadŬ·¡½º´Â Thread¸¦ »ó¼ÓÇϰí Àֳ׿ä. ÀÌ·¸°Ô µÇ¸é ÀÌ Å¬·¡½º´Â thread°¡ µÇ´Â °ÍÀÔ´Ï´Ù. CalculServerŬ·¡½º¿¡¼­ ServerThreadŬ·¡½º¸¦ »ý¼ºÇؼ­ start()¸Þ¼Òµå¸¦ È£ÃâÇϸé ÀÚµ¿À¸·Î ServerThreadÀÇ run()¸Þ¼Òµå°¡ È£ÃâµË´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡¼­ µ¥ÀÌÅ͸¦ ÀԷ¹޾Ƽ­, analyzePacket()¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© °á°ú°ªÀ» ¸¸µé¾î¼­ Ŭ¶óÀÌ¾ðÆ®¿¡ º¸³»ÁÖ¸é µË´Ï´Ù. ÀÌ °úÁ¤Àº ¹°·Ð ·çÇÁ·Î µ¹°í ÀÖ¾î¾ß Çϰí, ¸¸¾à Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀÌ Á¾·áµÇ¸é ·çÇÁ°¡ ³¡³ª¸é¼­ run()¸Þ¼Òµåµµ Á¾·áµÇ¾î¾ß ÇÕ´Ï´Ù. run()¸Þ¼ÒµåÀÇ ½ÇÇàÀÌ ³¡³ª¸é thread´Â ÀÚµ¿À¸·Î ³¡³ª°Ô µË´Ï´Ù.


Ŭ·¡½º ±¸Çö¿¡ ´ëÇØ¼­´Â Ưº°È÷ ´õ ÇÒ À̾߱Ⱑ ¾ø³×¿ä. ¾î¶»°Ô ÇÏ´ÂÁö¸¦ ¾Ë¾Æ¾ß ¼³°è°¡ °¡´ÉÇϱ⠶§¹®¿¡ ±¸Çö ¹æ¹ý±îÁö ÀüºÎ ´Ù ¼³¸íÀ» ÇØ¹ö·È´õ´Ï... ±×³É ³Ñ¾î°¡¸é ¼­¿îÇÏ´Ï±î ¿©±â¼­´Â µÎ °¡Áö¸¸ ¼³¸íÀ» Çϵµ·Ï ÇϰڽÀ´Ï´Ù. run()¸Þ¼Òµå¿¡¼­ ¼ÒÄÏÀÇ ¿¬°áÀ» ±â´Ù¸®´Â ·çÇÁ¿Í ¼ÒÄÏ ¿¬°áÀÌ ²÷°åÀ» °æ¿ì¸¦ ã´Â °Í°ú exceptionó¸®ÀÇ Á»´õ °í±Þ ±â¼úÀ» ¼³¸íÇϰڽÀ´Ï´Ù.

¸ÕÀú run()¸Þ¼Òµå´Â ¾Õ¼­ ¸»ÇßµíÀÌ ·çÇÁ¸¦ µ¹°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¿Ö³Ä¸é Ŭ¶óÀÌ¾ðÆ®°¡ µ¥ÀÌÅ͸¦ Çϳª¸¸ Àü¼ÛÇÏ°í ³¡³»´Â °ÍÀÌ ¾Æ´Ï¶ó °è¼ÓÇØ¼­ ¿¬°áÀ» À¯ÁöÇϸ鼭 µ¥ÀÌÅ͸¦ ÁÖ°í ¹Þ¾Æ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù. µû¶ó¼­ Ŭ¶óÀÌ¾ðÆ®°¡ Á¢¼ÓµÇ¾î ÀÖ´Â ÇÑ ÀÌ Thread´Â À¯ÁöµÇ¾î¾ß¸¸ Çϰí, Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀÌ Á¾·áµÇ¸é(»ç¿ëÀÚ°¡ ÇÁ·Î±×·¥À» ²÷°Å³ª, ·£¼±ÀÌ ²÷¾îÁ³°Å³ª, ÄÄÇ»ÅͰ¡ ²¨Á³°Å³ª.. µîµî), ÀÚµ¿À¸·Î Thread´Â Á¾·áµÉ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. ´ë´ÜÈ÷ ¾î·Á¿î ÀÛ¾÷ÀÎ °Í °°Áö¸¸, ½ÇÁ¦ ±¸ÇöÀº °£´ÜÇÕ´Ï´Ù. Ŭ¶óÀ̾ðÆ®ÀÇ Á¢¼ÓÀÌ ²÷±â¸é µ¥ÀÌÅ͸¦ ÀÐÀ¸·Á°í ÇÒ¶§ Áï½Ã IOExceptionÀÌ ³ª±â ¶§¹®ÀÔ´Ï´Ù. Áï, ±×³É µ¥ÀÌÅ͸¦ Àдٰ¡ exception¸¸ Àâ¾ÆÁÖ¸é µË´Ï´Ù. ¿¹¿Ü»óȲÀÌ ¹ß»ýÇϸé Ŭ¶óÀÌ¾ðÆ®¿Í ¿¬°áÀÌ ²÷¾îÁø °ÍÀ̴ϱî, ·çÇÁ¿¡¼­ ºüÁ®³ª°¡¼­ ¼ÒÄÏÀ» ²÷°í run()¸Þ¼Òµå¸¦ Á¾·áÇϸé threadµµ Á¾·áµÇ´Â °ÍÀÔ´Ï´Ù.


public void run() {
  String rcvPacket="";
  String sndPacket="";
 
  while (true) {

    try {
      rcvPacket=br.readLine();
      sndPacket=this.analyzePacket(rcvPacket);
      bw.write(sndPacket);
      bw.newLine();
      bw.flush();
    } catch (IOException e) {
      System.out.println("Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀÌ ²÷°å½À´Ï´Ù. ¼ÒÄÏÀ» ²÷°Ú½À´Ï´Ù.");
      break;                   // while ·çÇÁ ¹ÛÀ¸·Î ³ª°£´Ù.
    }
  }

       // ¼ÒÄÏ ¿¬°áÀ» Á¾·áÇÑ´Ù.
  try {
    br.close();
    bw.close();
    socket.close();
  } catch (IOException e) {
  }

}
while(true) ·Î ÀÎÇØ ¹«ÇÑ ·çÇÁ¸¦ µ¹°Ô µÇÁö¸¸, µ¥ÀÌÅ͸¦ Àаųª ¾µ¶§ exceptionÀÌ ³ª¿À¸é ¹Ù·Î ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í ·çÇÁ¸¦ ºüÁ® ³ª¿À°Ô ÀÛ¼ºµÇ¾î ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

´ÙÀ½¿£, exception󸮸¦ ¹è¿öº¾½Ã´Ù. Áö±Ý±îÁö try - catch¸¦ ÀÌ¿ëÇØ¼­ exceptionÀ» Àâ¾Æ³Â½À´Ï´Ù. ÇÏÁö¸¸ ¾î¶² ¸Þ¼Òµå´Â ±×³É È£ÃâÇÏ¸é µÇÁö¸¸, ¾î¶² ¸Þ¼Òµå´Â try - catch ·Î exceptionÀ» Àâ¾ÆÁÖÁö ¾ÊÀ¸¸é ÄÄÆÄÀϱîÁö µÇÁö ¾Ê´Â´Ù´Â °ÍÀº µÎ Á¾·ùÀÇ ¸Þ¼Òµå¿¡ ¾î¶² Â÷ÀÌÁ¡ÀÌ Á¸ÀçÇÑ´Ù´Â ¸»À̰ÚÁÒ. ¹°·ÐÀÔ´Ï´Ù. ±×·± ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÒ ¼öµµ ÀÖ°í, ²À ±×·¸°Ô ÀÛ¼ºÇØÁÖ¾î¾ß ÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ´ÙÀ½ ¸Þ¼Òµå¸¦ º¸±â·Î ÇսôÙ.


public void socket_connection() throws IOException {
  try {
    Socket socket=new Socket("127.0.0.1", 6000);
  } catch (IOException e) {
    throw e;
  }

}
¼³¸íÀ» ÇÏÁö ¾Ê¾Æµµ ¾î¶² ³»¿ëÀÎÁö´Â ±Ý¹æ ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¸Þ¼Òµå¸¦ ¼±¾ðÇÒ ¶§ µÚ¿¡ throws <Exception Á¾·ù> ¸¦ ºÙ¿©ÁÖ¾ú½À´Ï´Ù. ÀÌ·± ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¶§´Â ¹Ýµå½Ã try - catch¸¦ »ç¿ëÇÏ¿© exceptionÀ» Àâ¾ÆÁÖ¾î¾ß¸¸ ÇÕ´Ï´Ù. ¸Þ¼Òµå Áß°£¿¡ exceptionÀÌ ¹ß»ýÇϸé throw e; ¶ó´Â ¸í·ÉÀ» ½ÇÇà½ÃŰ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ¹ß»ýÇÑ exceptionÀ» ±×´ë·Î ¸Þ¼Òµå ¹Ù±ùÀ¸·Î Àü´ÞÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¸Þ¼Òµå ¾È¿¡¼­ exceptionÀÌ ¹ß»ýÇÏ¸é ±× exceptionÀº ¸Þ¼Òµå ¾È¿¡¼­ 󸮵ÇÁö ¾Ê°í ¸Þ¼Òµå¸¦ È£ÃâÇÑ °÷±îÁö exceptionÀÌ ±×´ë·Î Àü´ÞµÇ°Ô µË´Ï´Ù.

ÀÌ·± ¹æ¹ýÀº ´ëºÎºÐÀÇ °æ¿ì ¸Þ¼Òµå ³»¿¡¼­ exceptionÀ» ó¸®ÇÏ´Â °Íº¸´Ù ÈξÀ ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. ´Ù½Ã ¸»Çϸé ÃÖÁ¾ÀûÀ¸·Î »ç¿ëÇÏ´Â °÷¿¡¼­ exceptionÀ» ó¸®ÇÏ´Â °ÍÀÌ ÈξÀ ÁÁ´Ù´Â ÀǹÌÀÌÁÒ. ¿Ö³ÄÇϸé À§ÀÇ ¸Þ¼Òµå¿¡¼­ ¼ÒÄÏ ¿¬°á¿¡ ½ÇÆÐÇØ¼­ exceptionÀÌ ¹ß»ýÇß´Ù°í Ĩ´Ï´Ù. Áö±Ýó·³ ¸Þ¼Òµå¸¦ Àü´ÞÇÏÁö ¾Ê°í, ÀÌÀü¿¡ ÇÏ´ø ¹æ½ÄÀ¸·Î System.out.println(e.toString()); °ú °°Àº ½ÄÀ¸·Î ¿¡·¯ ¸Þ½ÃÁö¸¦ ³»º¸³¾ ¼öµµ ÀÖ½À´Ï´Ù. ±×·¯³ª awt³ª swingÀ» »ç¿ëÇÏ´Â ¾î¶² ÇÁ·Î±×·¥¿¡¼­ ÀÌ Å¬·¡½º¸¦ »ç¿ëÇÏ¿© ³×Æ®¿öÅ© ÇÁ·Î±×·¥À» ÀÛ¼ºÇϰíÀÚ ÇÑ´Ù°í »ý°¢Çغ¸¼¼¿ä. ¸¸¾à ¾î¶² exceptionÀÌ ³ª¸é Text Area³ª Label °°Àº À©µµ¿ì ¾È¿¡ ³ªÅ¸³ª°Ô ÇÏ°í ½ÍÁö¸¸, ¸Þ¼Òµå ¹Ù±ù¿¡¼­´Â ¾î¶² exceptionÀÌ ³µ´ÂÁö ¾Ë ¼öµµ ¾ø°í, System.out.println()¸í·ÉÀ¸·Î´Â Text Area¿¡ Ãâ·ÂÇÒ ¼öµµ ¾ø½À´Ï´Ù. µû¶ó¼­ ¸Þ¼Òµå ³»¿¡¼­ exceptionÀÌ ³ª¸é ±× exceptionÀº ¾È¿¡¼­ ó¸®ÇÏ´Â °Íº¸´Ù´Â ´ëºÎºÐ ¸Þ¼Òµå¸¦ È£ÃâÇÑ °÷¿¡¼­ ó¸®ÇØ ÁÖ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¹°·Ð À̰ÍÀº '´ëºÎºÐ'ÀÇ °æ¿ìÀ̰í, ±×·¸Áö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù.

 

 

6) Ŭ·¡½º ±¸Çö3: ¼­¹ö ÆÐŶ ºÐ¼®°ú °á°ú°ª °è»ê

analyzePacket()¸Þ¼Òµå¸¦ ±¸ÇöÇØº¾½Ã´Ù. Ŭ·¡½º±¸Çö1(Ŭ¶óÀ̾ðÆ®)¿¡¼­ Çß´ø °Í °°ÀÌ StringTokenizer¸¦ »ç¿ëÇÕ´Ï´Ù. °úÁ¤Àº ´ÙÀ½°ú °°½À´Ï´Ù.

ÀÎÀÚ·Î ³Ñ°Ü¹ÞÀº ¹®ÀÚ¿­(String rcvPacket)°ú ºÐ¸®ÀÚ( delemeter = : )À» ³Ö¾î¼­ StringTokenizer st¸¦ »ý¼ºÇÕ´Ï´Ù.

st.nextToken()À¸·Î ¿¬»êÀÚ¸¦ ¾ò½À´Ï´Ù.
st.nextToken()À¸·Î ù¹øÂ° ¼ö¸¦ ¾ò½À´Ï´Ù.
st.nextToken()À¸·Î µÎ¹øÂ° ¼ö¸¦ ¾ò½À´Ï´Ù.
¿¬»êÀÚ°¡ +ÀÌ¸é µÎ ¼ö¸¦ ´õÇϰí, -ÀÌ¸é µÎ¼ö¸¦ »©°í...
°è»ê¿¡ ¼º°øÇÏ¿´À¸¸é "s:"+°á°ú°ª À¸·Î Ŭ¶óÀÌ¾ðÆ®¿¡ Àü¼ÛÇÒ ÆÐŶÀ» ¸¸µì´Ï´Ù. ½ÇÆÐÀ̸é "f:"+¿¡·¯¸Þ½ÃÁö ·Î Àü¼ÛÇÒ ÆÐŶÀ» ¸¸µì´Ï´Ù.
¸¸µç ÆÐŶÀ» ¹ÝȯÇÕ´Ï´Ù.(return)
¹°·Ð Ŭ¶óÀÌ¾ðÆ®¿¡¼­ Ç×»ó ¿Ã¹Ù¸¥ ÆÐŶ¸¸ ³Ñ¾î¿À¶ó´Â ¹ýÀº ¾øÀ¸¹Ç·Î ¿¡·¯Ã³¸®¸¦ ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ¿¬»êÀÚ°¡ Ʋ¸®°Å³ª, 0À¸·Î ³ª´©°Å³ª, ¼ýÀÚ°¡ ¾Æ´Ñ ¹®ÀÚ°¡ ³Ñ¾î¿À°Å³ª ÇÏ´Â °æ¿ìµéÀÔ´Ï´Ù. ¿¡·¯Ã³¸®´Â °¢ÀÚ ±¸ÇöÇØº¸µµ·Ï ÇÕ´Ï´Ù.

 

 

7) Âü°í¿¹Á¦: Á¦°¡ ÀÛ¼ºÇÑ ÇÁ·Î±×·¥ÀÔ´Ï´Ù.

Á¦°¡ ÀÛ¼ºÇÑ ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ÇÑ ¹ø ½ÇÇà½ÃÄѺ¸½Ã°í, °¢ÀÚ ÀÛ¼ºÇÑ ÄÚµå¿Í ¼Ò½º¸¦ ºñ±³ÇØ º¸¼¼¿ä.

CalculServer.java : °è»ê±â ¼­¹öÀÔ´Ï´Ù. Æ÷Æ® ¹øÈ£¸¦ ÆÄ¶ó¹ÌÅÍ·Î ÁÙ ¼ö ÀÖ½À´Ï´Ù.(default=5777) »ç¿ë¹æ¹ý: java CalculServer [port]
CalculClient.java : °è»ê±â ¼­¹ö¿Í Åë½ÅÀ» ÅëÇØ °è»êÀ» ÇÕ´Ï´Ù. mainÇÔ¼ö´Â Å×½ºÆ® ¿ëÀ¸·Î¸¸ ¸¸µé¾ú±â ¶§¹®¿¡, »ç¿ëÀÚ ÀÔ·ÂÀ» ¹ÞÀ» ¼ö ¾ø°í ±×³É ¼¼ °¡Áö °è»êÀ» Çϰí Á¾·áµË´Ï´Ù.
Calculator.java : °è»ê±âÀÔ´Ï´Ù. Űº¸µå·ÎºÎÅÍ ÀÔ·ÂÀ» ¹Þ¾Æ¼­ CalculClient¸¦ »ç¿ëÇÏ¿© °è»êÀ» ¼öÇàÇÕ´Ï´Ù. Űº¸µå·ÎºÎÅÍ ÀÔ·Â ¹Þ´Â °Íµµ Áö±Ý±îÁöÀdz»¿ëÀ» ÅëÇØ ±Ý¹æ ÀÌÇØÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

»ç¿ë¹æ¹ý: java Calculator [port] [Server IP]
¸ÕÀú ¼¼ È­ÀÏÀ» ÄÄÆÄÀÏÇÏ°í¼­ ¼­¹ö¸¦ ½ÇÇà½Ãŵ´Ï´Ù.

SHELL> java CalculServer [port ¹øÈ£]

´ÙÀ½Àº ´Ù¸¥ Äֿܼ¡¼­ Calculator¸¦ ½ÇÇà½Ãŵ´Ï´Ù.

SHELL> java Calculator [port ¹øÈ£] [Server IP]

 

 

 

 

ÇÁ·ÎÁ§Æ®3. äÆÃÇÁ·Î±×·¥

Áö±Ý±îÁö ÇÁ·ÎÁ§Æ®¸¦ ¾î¶»°Ô ÁøÇàÇØ¿Ô´ÂÁö¸¦ »ý°¢Çغ¾½Ã´Ù. ù¹øÂ° ÇÁ·ÎÁ§Æ®´Â ±×³É ¼­¹ö¸¦ Çϳª ¶ç¿ì°í, Ŭ¶óÀÌ¾ðÆ®¸¦ ½ÇÇà½ÃŰ¸é ¼­¹ö¿¡ µ¥ÀÌÅ͸¦ ÇÑ ¹ø º¸³½ ÈÄ ÇÁ·Î±×·¥À» Á¾·áÇß½À´Ï´Ù. µÎ¹øÂ° ÇÁ·ÎÁ§Æ®´Â ÇϳªÀÇ ¼­¹ö¿¡ ¿©·¯ Ŭ¶óÀÌ¾ðÆ®°¡ ¿¬°áÇÒ ¼ö ÀÖ¾úÁö¸¸, µ¥ÀÌÅÍ Àü¼Û¿¡ À־´Â Çϳª°¡ °¡¸é Çϳª°¡ ¿À°í ÇÏ´Â ½ÄÀ̾ú½À´Ï´Ù. À̹ø ÇÁ·ÎÁ§Æ®°¡ °¡Áö´Â Â÷ÀÌÁ¡Àº äÆÃ ÇÁ·Î±×·¥À» »ý°¢ÇÏ¸é ½±°Ô ¾Ë ¼ö ÀÖ´Â °ÍµéÀε¥, ´ÙÀ½°ú °°½À´Ï´Ù.

ÀÌÀü¿¡´Â ÆÐŶÀ» ÇÑ ¹ø º¸³»°í¼­ ÀÀ´äÀ» ±â´Ù·ÈÁö¸¸, À̹ø ÇÁ·ÎÁ§Æ®¿¡¼­´Â ¼­¹ö¿¡¼­ ºñµ¿±âÀûÀ¸·Î(¾Æ¹«¶§³ª) µ¥ÀÌÅ͸¦ º¸³À´Ï´Ù. ¿Ö³ÄÇÏ¸é ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö·Î º¸³½ ¸Þ½ÃÁöµµ ¹Þ¾Æ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù.
¼­¹ö¿¡¼­´Â ÀÌÀü¿¡´Â ÆÐŶÀ» º¸³½ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô¸¸ °á°ú°ª(ÆÐŶ)À» Àü¼ÛÇßÁö¸¸, Áö±ÝÀº ÇϳªÀÇ Å¬¶óÀÌ¾ðÆ®¿¡¼­ µ¥ÀÌÅͰ¡ º¸³»Áö¸é ´Ù¸¥ ¸ðµç Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ¸Þ½ÃÁö¸¦ º¸³»¾ß¸¸ ÇÕ´Ï´Ù.
¼­¹ö¿¡¼­ »ý¼ºÇÑ thread°¡ ÀÌÀü¿¡´Â µ¶¸³ÀûÀ¸·Î Ŭ¶óÀÌ¾ðÆ®¿Í Åë½ÅÇÏ´Â ¸ðµç ¿ªÇÒÀ» ´ã´çÇßÁö¸¸, À̹ø¿¡´Â ¼­¹ö·ÎºÎÅÍÀÇ ¿ä±¸¿¡ ÀÇÇØ ¾ðÁ¦¶óµµ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ¸Þ½ÃÁö¸¦ º¸³¾ ¼ö ÀÖ¾î¾ß Çϰí, ¿ªÀ¸·Î Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¸Þ½ÃÁö¸¦ ¹ÞÀ¸¸é ¼­¹ö¿¡°Ô ´Ù¸¥ ¸ðµç Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ¸Þ½ÃÁö¸¦ Àü¼ÛÇ϶ó°í ¿äÃ»ÇØ¾ß ÇÕ´Ï´Ù. µû¶ó¼­ ¼­¹ö°¡ »ý¼ºÇÑ thread°¡ ¼­¹ö¿Í Åë½ÅÀ» ÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.

µû¶ó¼­, ÇÁ·ÎÁ§Æ®2¿¡¼­ Çß´ø °Í°ú °°ÀÌ µ¥ÀÌÅ͸¦ º¸³»°í¼­ ¹Ù·Î °á°ú¸¦ ±â´Ù¸®°Å³ª(Ŭ¶óÀ̾ðÆ®), ¹Ý´ë·Î µ¥ÀÌÅ͸¦ ¹Þ°í ¹Ù·Î ±× Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ÀÀ´äÀ» º¸³»´Â(¼­¹ö) ¹æ½ÄÀÌ ¾Æ´Ñ ´Ù¸¥ ¹æ½ÄÀÌ ¿ä±¸µË´Ï´Ù. ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î äÆÃ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

Ŭ¶óÀÌ¾ðÆ®¿¡¼­µµ ¼­¹ö·ÎºÎÅÍÀÇ µ¥ÀÌÅ͸¦ ¹Þ±â À§ÇØ Thread¸¦ »ç¿ëÇÕ´Ï´Ù. µ¥ÀÌÅ͸¦ º¸³»´Â °ÍÀº »ç¿ëÀÚ°¡ ³»¿ëÀ» ÀÔ·ÂÇßÀ» ¶§ÀÌÁö¸¸, ¼­¹ö·ÎºÎÅÍÀÇ µ¥ÀÌÅÍ´Â ¾Æ¹«¶§³ª ¿Ã ¼ö Àֱ⠶§¹®¿¡ ¼­¹ö·ÎºÎÅÍ ÀÀ´äÀ» ¹Þ´Â ºÎºÐÀº thread·Î ÀÛ¼ºµÇ¾î¾ß¸¸ ¼­¹öÀÇ µ¥ÀÌÅÍ Àü¼Û¿¡ ¹Ù·Î ÀÀ´äÇÒ ¼ö ÀÖ½À´Ï´Ù.
¼­¹ö¿¡¼­´Â Ŭ¶óÀÌ¾ðÆ®°¡ ¿¬°áµÇ¸é ´ÜÁö Thread¸¦ ¸¸µé°í thread¿¡°Ô ¸ðµç ¿ªÇÒÀ» ÀÏÀÓÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ¸¸µç threadÀÇ ¸ñ·ÏÀ» °¡Áö°í¼­ ÇϳªÀÇ thread°¡ ¸Þ½ÃÁö¸¦ ¹ÞÀ¸¸é, thread´Â ¼­¹ö¿¡ ¸Þ½ÃÁö¸¦ ¹Þ¾Ò´Ù´Â ½ÅÈ£¸¦ º¸³»°í, ¼­¹ö´Â thread ¸ñ·Ï¿¡ ÀÇÇØ¼­ ¸ðµç Ŭ¶óÀÌ¾ðÆ®¿¡°Ô µ¥ÀÌÅ͸¦ Àü¼ÛÇØ¾ß ÇÕ´Ï´Ù.
thread°¡ ¼­¹ö¿Í ±³½ÅÇÒ ¼ö ÀÖµµ·Ï, thread¸¦ »ý¼ºÇÒ¶§ ¼­¹ö ÀÚ½ÅÀÇ ·¹ÆÛ·±½º¸¦ ³Ñ°ÜÁÝ´Ï´Ù. ±×·¯¸é thread¿¡¼­´Â ¼­¹ö¿¡ ¸Þ½ÃÁö¸¦ º¸³¾¶§, ¼­¹öÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
°è»ê±â ÇÁ·ÎÁ§Æ®±îÁö ¼º½ÇÈ÷ µû¶ó ¿Ô´Ù¸é Ŭ¶óÀÌ¾ðÆ®¿¡¼­µµ thread¸¦ »ý¼ºÇÏ´Â ºÎºÐÀº ¾î·ÆÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö·Î ¸Þ½ÃÁö¸¦ º¸³»´Â °ÍÀº Àü°ú °°Áö¸¸ ¸Þ½ÃÁö¸¦ ¹Þ´Â ºÎºÐÀº thread¸¦ »ý¼ºÇÏ¿© ³Ñ°ÜÁÖ¾î¾ß ÇÕ´Ï´Ù. À̸¦ À§ÇØ thread¸¦ »ý¼ºÇÒ¶§, ¼ÒÄÏ ¶Ç´Â Reader¸¦ ÇÔ²² ³Ñ°ÜÁ־ µ¥ÀÌÅ͸¦ ¹Þµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ Å¬¶óÀÌ¾ðÆ®¿¡ ÀÖ´Â È­¸é¿¡ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϱâ À§Çؼ­´Â Ŭ¶óÀ̾ðÆ®ÀÇ ·¹ÆÛ·±½ºµµ ÇÔ²² ³Ñ°ÜÁÖ¾î¾ß ÇÕ´Ï´Ù.

 

 

1) ÇÁ·ÎÅäÄÝ Á¤ÀÇ

ÀÌ ÇÁ·Î±×·¥¿¡¼­´Â º°´Ù¸¥ ÇÁ·ÎÅäÄÝ Á¤Àǰ¡ ÇÊ¿äÇÏÁö ¾ÊÀ» °Í °°³×¿ä. ¾Æ¹«°Íµµ Á¤ÀÇÇÏÁö ¾Ê´Â °Íµµ ÇϳªÀÇ Á¤ÀǶó°í ÇÒ ¼ö ÀÖ°ÚÁö¸¸¼­µµ... ¾Æ¹«Æ° Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ÇÑ ÁÙ ¹®ÀåÀ» º¸³»¸é, ¼­¹ö¿¡¼­´Â º¸³½ »ç¶÷ ¾ÆÀ̵ð¿Í ÇÕÃļ­ ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®µé¿¡°Ô º¸³»ÁÖ¸é µÇ°ÚÁÒ. ¾ÆÀ̵𸦠¹Ù²Ù´Â °ÍÀ̳ª, µµ¿ò¸» º¸±â °°Àº ±â´ÉµéÀº ¼­¹ö³ª Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¹ÞÀº ÅØ½ºÆ®¸¦ ºÐ¼®ÇÏ´Â ±â´ÉÀ» ³ÖÀ¸¸é µÇ°ÚÁÒ.

À̹ø¿¡µµ ÇÑ ÁÙ ¾¿ÀÇ ¸Þ½ÃÁö¸¦ ÁÖ°í ¹Þ°Ô µÇ´Ï±î readLine() ¸Þ¼Òµå°¡ ÀÖ´Â BufferedReader¿Í BufferedWriter¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ°Ú³×¿ä.

 

 

2) ¼­¹ö ¼³°è1: ¼ÒÄÏ Áغñ¿Í Thread¸®½ºÆ® ¸¸µé±â

ÀÌ ºÎºÐµµ °è»ê±â ÇÁ·ÎÁ§Æ®¿Í º°¹Ý ´Ù¸£Áö ¾Ê½À´Ï´Ù. ´ÜÁö thread¸¦ »ý¼ºÇÒ¶§, ÀÎÀÚ·Î ÀÚ±â ÀÚ½ÅÀ» ³Ñ°ÜÁÖ´Â °Í°ú, »ý¼ºÇÑ thread¸¦ ¸ñ·Ï¿¡ ³Ö¾îµÎ´Â °ÍÀÌ ´Ù¸£ÁÒ. ÀÏ´Ü ÇÁ·ÎÁ§Æ®2¿¡¼­¿Í °°ÀÌ ¼­¹ö ºÎºÐÀÇ ¼ÒÄϰú thread ±¸µ¿±îÁö ±¸ÇöÇÏ°í¼­, ¼öÁ¤Çϵµ·Ï ÇØº¾½Ã´Ù. ´ÙÀ½°ú °°°ÚÁÒ.

ServerSocket srv=new ServerSocket(port);      // ¼­¹ö ¼ÒÄÏÀ» ¸¸µì´Ï´Ù. port´Â Æ÷Æ® ¹øÈ£
while (true) {
  Socket socket=srv.accept();         // Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸³´Ï´Ù.
                                      // ¿¬°áµÇ¸é ´ÙÀ½ÇàÀ¸·Î ÁøÇàµË´Ï´Ù.
  Thread t=new ServerThread(socket);  // Thread¸¦ »ý¼ºÇÕ´Ï´Ù. À̶§ ¼ÒÄÏÀ» ÀÎÀÚ·Î ³Ñ°ÜÁÝ´Ï´Ù.
  t.start();                          // »ý¼ºµÈ Thread¸¦ ±¸µ¿½Ãŵ´Ï´Ù.
}

¿©±â±îÁö´Â ¸ðµÎ ¾Ë°í ÀÖ°ÚÁÒ? ¿©±â¼­ ´õ Ãß°¡µÇ¾î¾ß ÇÒ ³»¿ëÀº »ý¼ºÇÑ threadÀÇ ¸ñ·Ï¿¡ ³Ö´Â °ÍÀÔ´Ï´Ù. ¸ñ·ÏÀº ¹è¿­·Î ¸¸µé¾îµµ ÁÁ°í, ¸®½ºÆ®¸¦ ±¸ÇöÇØµµ ÁÁ°ÚÁÒ. ¹è¿­Àº ¸¸µé±â´Â ½±Áö¸¸, óÀ½ºÎÅÍ »ç¿ëÇϰíÀÚÇÏ´Â ÃÖ´ëÇÑÀÇ °ø°£À» Àâ¾ÆÁÖ¾î¾ß Çϱ⠶§¹®¿¡ ¸Þ¸ð¸® ³¶ºñµµ ½ÉÇϰí, Áß°£¿¡ »ç¿ëÀÚ°¡ ³ª°¡´Â °æ¿ì, ±× ºó°ø°£À» ä¿ì±â À§ÇØ µÚ¿¡ ÀÖ´Â ³»¿ëÀ» Çϳª¾¿ ¾ÕÀ¸·Î ´ç°ÜÁÖ¾î¾ß ÇÏ´Â ºÒÆíÀÌ ÀÖ½À´Ï´Ù. ¸®½ºÆ®´Â ¹è¿­ÀÇ ´ÜÁ¡À» ±Øº¹ÇÒ ¼ö ÀÖÁö¸¸, Æ÷ÀÎÅͰ¡ ¾ø´Â ÀÚ¹Ù¿¡¼­ ±¸ÇöÇÏ´Â °ÍÀÌ ¿øÄ¢ÀûÀ¸·Î ºÒ°¡´ÉÇÏÁÒ. ÇÏÁö¸¸, °ÆÁ¤ÇÒ °ÍÀº ¾ø½À´Ï´Ù. Vector¶ó´Â Ŭ·¡½º¸¦ »ç¿ëÇÏ¸é °£´ÜÇÏ°Ô ÇØ°áµÇ±â ¶§¹®ÀÔ´Ï´Ù. ÀÌ Å¬·¡½ºÀÇ ¼¼ºÎÀûÀÎ »ç¾çÀº ÀÚ¹Ù½ºÆåÀ» º¸µµ·Ï Çϰí, Áö±ÝÀº Áß¿äÇÑ ¸Þ¼Òµå¸¸ ¸î °³ ¾Ë¾Æº¾½Ã´Ù.

class Java.util.Vector

  • void addElement(Object obj) : ³»¿ë(°´Ã¼)À» Ãß°¡ÇÒ ¶§ »ç¿ëÇÕ´Ï´Ù.
  • Object elementAt(int index) : ÁÖ¾îÁø À§Ä¡(index)¿¡ ÀÖ´Â ³»¿ëÀ» ÂüÁ¶ÇÕ´Ï´Ù.
  • boolean removeElement(Object o) : o¿Í °°Àº °´Ã¼ ¸ñ·Ï¿¡¼­ »èÁ¦ÇÕ´Ï´Ù.
  • void removeElementAt(int index) : ÁÖ¾îÁø À§Ä¡¿¡ ÀÖ´Â °´Ã¼¸¦ »èÁ¦ÇÕ´Ï´Ù..

 

Vector v=new Vector(); ¶ó°í ¼±¾ðµÇ¾î ÀÖ´Ù¸é v¿¡ Ãß°¡Çϱâ À§Çؼ­´Â v.addElement(obj);


 
 

Total 22
¹øÈ£ Á¦   ¸ñ Á¶È¸
22 Java SE 6 ÇÑ±Û API ¹®¼­ÀÔ´Ï´Ù. 4149
21 Stream for Data Transmision 2572
20 setAutoCommit(false) ¿¡ ´ëÇØ¼­... 7749
19 java.net ÆÐŰÁö - Url Ŭ·¡½º 5512
18 ¼ÒÄÏ ¿¬°á »ùÇà 4896
17 Java ¼ÒÄÏÅë½Å¿¹Á¦ °è»ê±â äÆÃÇÁ·Î±×·¥ 6774
16 Java ¼ÒÄÏÅë½Å¿¹Á¦ °è»ê±â ÇÁ·Î±×·¥ 5126
15 Java ¼ÒÄÏÅë½Å¿¹Á¦ Socket in TCP/IP protocol 14747
14 Java ¼ÒÄÏÅë½Å¿¹Á¦ 13355
13 ÀÚ¹Ù ÄÄÆÄÀϰú ½ÇÇà ¿¡ »ç¿ëµÇ¾îÁö´Â javac, java ¸í·É¾îÀÇ ¿É¼Ç 6057
12 ÀÚ¹Ù api ¸Þ´º¾ó 4008
11 java.util ÆÐŰÁö 5318
10 J2SE, J2EE, J2ME 3858
9 ÀÌŬ¸³½º »ç¿ë¹æ¹ý 9406
8 ¸®´ª½º ÀÚ¹Ù¼³Ä¡ 4105
7 IBM ÀÌŬ¸³½ºÀÇ ±âº»ÀûÀÎ »ç¿ë¹ýÀ» ¼³¸í 4615
6 ÀÚ¹Ù¾ð¾îÀÇ Æ¯Â¡ 4236
5 ÀÚ¹Ù API ¹®¼­¿¡¼­ substring ¸Þ¼­µåÀÇ »ç¿ë¹æ¹ý ÀÔ´Ï´Ù. 11156
4 JAVA MySQL ¿¬µ¿Çϱâ 9275
3 JAVA µ¥ÀÌÅÍ º£À̽º µå¶óÀ̹ö ¸íΰú µ¥ÀÌÅͺ£À̽º URL 3820
 1  2  
 
°³ÀÎȨÆäÀÌÁö ´ýº¡´åÄÄÀº ÇÁ·Î±×·¡¸Ó¿Í µðÀÚÀ̳ÊÀ§ÇÑ ITÄ¿¹Â´ÏƼ °ø°£ÀÔ´Ï´Ù.
Copyright ¨Ï www.dumbung.com. All rights reserved.