TCPÎļþ´«Êä³ÌÐòÉè¼ÆÊé
Ò»¡¢ÊµÑéÃû³Æ£ºTCPÎļþ´«Êä³ÌÐò ¶þ¡¢ÊµÑéÒªÇó
1¡¢Éè¼ÆÒ»¸öÓ¦ÓóÌÐò£¬¸ÃÓ¦ÓóÌÐòÄܹ»ÊµÏÖÍøÂçÖÐÁ½Ì¨¼ÆËã»úÖ®¼ä´«ÊäÎļþ¡£
2¡¢Ò»¸ö³ÌÐò¼ÈÄܹ»½¨Á¢·þÎñÆ÷ÓÖÄܹ»ÒÔÖն˵ÄÐÎʽÁ¬½Ó·þÎñÆ÷¡£ 3¡¢ÖÕ¶Ë»òÕß·þÎñÆ÷¼ÈÄܹ»·¢ËÍÎļþÓÖÄܹ»½ÓÊÕÎļþ¡£ 4¡¢´«ËÍÎļþÀàÐÍӦΪÈκÎÀàÐÍ£¬Îļþ´óСΪÈÎÒâ¡£
Èý¡¢×ÜÌ广»®
1¡¢ÍøÂç´«ÊäÐÒéµÄÑ¡Ôñ
ÔÚTCP/IPÐÒéÕ»ÖУ¬ÓÐÁ½¸ö¸ß¼¶ÐÒéÊÇÎÒÃÇÍøÂçÓ¦ÓóÌÐò±àдÕßÓ¦¸ÃÁ˽âµÄ£¬ËüÃÇ\´«Êä¿ØÖÆÐÒé\£¨Transmission Control Protocol,¼ò³ÆTCP£©ºÍ\Óû§Êý¾Ý±¨ÐÒé\£¨User Datagrm Protocol,¼ò³ÆUDP£©¡£
TCPÊÇÃæÏòÁ¬½ÓµÄͨÐÅÐÒ飬TCPÌṩÁ½Ì¨¼ÆËã»úÖ®¼äµÄ¿É¿¿ÎÞ´íµÄÊý¾Ý´«Êä¡£Ó¦ÓóÌÐòÀûÓÃTCP½øÐÐͨÐÅʱ£¬Ô´ºÍÄ¿±êÖ®¼ä»á½¨Á¢Ò»¸öÐéÄâÁ¬½Ó¡£Õâ¸öÁ¬½ÓÒ»µ«½¨Á¢£¬Á½Ì¨¼ÆËã»úÖ®¼ä¾Í¿ÉÒÔ°ÑÊý¾Ýµ±×÷Ò»¸öË«Ïò×Ö½ÚÁ÷½øÐн»»»¡£
UDPÊÇÎÞÁ¬½ÓͨÐÅÐÒ飬UDP²»±£Ö¤¿É¿¿Êý¾ÝµÄ´«Ê䣬µ«Äܹ»ÏòÈô¸É¸öÄ¿±ê·¢ËÍÊý¾Ý£¬½ÓÊÕ·¢×ÔÈô¸É¸öÔ´µÄÊý¾Ý¡£¼òµ¥µØËµ£¬Èç¹ûÒ»¸öÖ÷»úÏòÁíÍâһ̨Ö÷»ú·¢ËÍÊý¾Ý£¬ÕâÒ»Êý¾Ý¾Í»áÁ¢¼´·¢³ö£¬¶ø²»¹ÜÁíÍâһ̨Ö÷»úÊÇ·ñÒÑ×¼±¸½ÓÊÕÊý¾Ý¡£Èç¹ûÁíÍâһ̨Ö÷»úÊÕµ½ÁËÊý¾Ý£¬Ëü²»»áÈ·ÈÏÊÕµ½Óë·ñ¡£
ΪÁËʹÁ½Ì¨¼ÆËã»úÖ®¼ä´«ÊäµÄÎļþÊý¾Ý²»»á¶ªÊ§»ò·¢Éú´íÎó£¬Ó¦¸Ã²ÉÓÃTCPÐÒé¡£ 2¡¢TCPÐÒéÔÚVC++ÖеÄʵÏÖ
ÔÚVC++ÖУ¬ÍøÂçÐÒéµÄʵÏÖÓÐÒÔϼ¸ÖÖ·½Ê½£º a¡¢²ÉÓÃWinSocket APIº¯Êý¡£
APIº¯ÊýÖÐÌṩÁË»ù±¾SocketµÄϵͳµ÷Ó㬾ßÌåʵÏÖ·½·¨Îª·þÎñÆ÷¶ËÊ×ÏÈÒªµ÷ÓÃsocket()º¯Êý½¨Á¢Ò»¸öÁ÷ʽÌ×½Ó×Ö£¬ÓÃbind()º¯ÊýÓë±¾»úµÄÒ»¸ö¶Ë¿Ú½¨Á¢¹ØÁª£¬¼ÌÐøµ÷ÓÃlisten()º¯Êý½«Ì×½Ó×ÖÖÃÓÚ±»¶¯µÄÕìÌý·½Ê½ÒÔ¼àÌýÁ¬½Ó£¬È»ºóµ÷ÓÃaccept()º¯Êý½øÈëµÈ´ý״̬֮ºó²Å¿ÉÒÔ½ÓÊÕÀ´×Ô¿Í»§¶ËµÄÇëÇó£¬Ò»µ©½ÓÊÕµ½¿Í»§¶Ëͨ¹ýconnect·¢³öµÄÁ¬½ÓÇëÇó£¬accept½«·µ»ØÒ»¸öеÄÌ×½Ó×ÖÃèÊö·û¡£Í¨¹ý´ËÌ×½Ó×ÖÃèÊö·ûµ÷ÓÃsend()»òrecv()º¯Êý¼´¿ÉÓë¿Í»§¶Ë½øÐÐÊý¾ÝÊÕ·¢¡£´ýÊý¾Ý´«ËÍÍê³É£¬·þÎñÆ÷¿Í»§¶Ëµ÷ÓÃclosesocket()¹Ø±ÕÌ×½Ó×Ö¡£
¸Ã·½·¨ÔÚ±à³Ì¹ý³ÌÖÐÐèҪעÒâsocketÁ¬½ÓµÄÕû¸ö¹ý³Ì£¬±à³Ì¹¤×÷Á¿´ó£¬±à³ÌЧÂʵͣ¬µ¥È´¿ÉÒÔ¼ÓÉî¶ÔÍøÂçÐÒéµÄÈÏʶ¡£
³ÌÐòÁ÷³ÌʾÒâͼÈçÏ£º
.רҵ.רע.
Socket() Bind() Listen() Accept() Socket() Connect() Send()/recv() Closesocket() Send()/recv()
Closesocket() b¡¢²ÉÓÃVC++ÖÐÌṩµÄMFCÀ࣬CAsyncSocket»òCSocket.
Á½¸öÀà¶¼¶ÔWinSocket API½øÐÐÁË·â×°£¬CSocket¶ÔËüµÄ·â×°±ÈCAsyncSocket¸üÉʹµÃ¶ÔÓÚ´Óδ½Ó´¥¹ýWinSockets APIµÄ±à³Ì³ÌÐòÔ±£¬Ò²Äܹ»±àÐ´ÍøÂç³ÌÐò¡£ ¶ø±¾³ÌÐòÒ²ÊDzÉÓÃÁËCSocketÀà½øÐбà³Ì¡£ 3¡¢´«ÊäÊý¾ÝµÄ»º³åÎÊÌâ
±¾»úÒª´«¸ø¶Ô·½µÄÎļþ²»ÊÇ´ÓÍâ´æÖ±½Óͨ¹ýÍøÂç·¢Ë͵쬶ø¶Ô·½·¢Ë͵ÄÊý¾ÝÒ²²»ÊÇÖ±½Ó´æÈëÍâ´æµÄ¡£¶øÊÇÔÚ´æÖпª±ÙÒ»¿é»º³åÇø£¬´ÓÍâ´æÈ¡³öµÄÎļþÏÈ´æÈ뻺³åÇø£¬È»ºó´«¸øsocket¡£¶ø´Ósocket½ÓÊÕµÄÊý¾ÝÒ²ÊÇÏÈ´æÈ뻺³åÇøÈ»ºóÔÙ´æµ½Íâ´æ¡£
ΪÁ˽â¾ö»º³åÎÊÌ⣬VC++Ìí¼ÓÁËCArchiveÀà,CArchiveÀàרÃÅÓÃÀ´¹ÜÀíÒ»¿é´æµ¥Ôª£¬Æä´óС¿ÉÒÔ×Ô¼ºÀ´¶¨Òå¡£ÓÃCArhiveÀà¼ÈÒÔ°ÑÊý¾ÝÔØÈë·ÖÅäµÄ´æÇø£¬ÓÖ¿ÉÒÔ½«´æÇøµÄÊý¾Ý´æÈëÎļþ¡£ÔÚ¸ÃÀàµÄ¶ÔÏó³õʼ»¯Ê±£¬ÐèÒªºÍij¸öÎļþ½¨Á¢Á¬½Ó£¬ÕâÑùÊý¾Ý¾Í¿ÉÒÔÔØÈë»ò´æ´¢ÁË¡£ 4¡¢SocketµÄÎļþ»¯¹ÜÀí
ÔÚ´ó¶àÊý±à³Ì»·¾³ºÍ±à³ÌÓïÑÔ¶à°Ñsocket¿´×÷Ò»¸öÌØÊâµÄÎļþ£¬Æä´«Êä¹ý³Ì¾Í¿ÉÒÔ¿´×÷ÊǶÔÎļþµÄ¶Áд²Ù×÷¡£¶øVC++Ò²ÊÇÈç´Ë¡£
ΪÁ˱ãÓÚÍøÂçSocketµÄ¹ÜÀí£¬ÔÚVC++ÖУ¬¿ÉÒÔ¶ÔÍøÂçSocketʵÏÖÎļþ»¯¹ÜÀí¡£ÎªÁËʵÏָù¦ÄÜ£¬ÐèÒªÓõ½VC++ÖеÄÀàCSocketFileÀ࣬¸ÃÀàÖ±½ÓÅÉÉúÓÚCFileÀ࣬ʹÓøÃÀà¿ÉÒÔ´ïµ½¶ÔSocketÎļþ»¯¹ÜÀíµÄÄ¿µÄ¡£ÈçCSocketFileÀà¿ÉÒÔÓëCArchiveÀཨÁ¢Á¬½Ó£¬ÕâÑù¾ÍΪSocket´´Á¢ÁËÒ»¿é»º³åÇø¡£Ó¦¸Ã×¢ÒâµÄÊÇËäÈ»CSocketFileÀàÖ±½Ó´ÓCFileÀàÖÐÅÉÉú¹ýÀ´£¬µ«CFileÀàÖеÄһЩº¯ÊýCSocketÊDz»Äܵ÷Óõģ¬Èç¹ûµ÷Óã¬ÏµÍ³±ã»á·µ»Ø´íÎó¡£
.רҵ.רע.
5¡¢Êý¾ÝµÄ´®Ðл¯ÎÊÌâ
´Ó¶Ô·½µÄ¼ÆËã»ú´«Êä¹ýÀ´µÄÊý¾Ý´æÈëÁ˴棬ÈçºÎ½«ÕâЩÊý¾ÝдÈëÎļþÄØ£¿Òª·¢Ë͵ÄÎļþÈçºÎ½«ÆäÔØÈë´æ£¿ÔÚÕâ¸ö³ÌÐòÀïÎÒ²ÉÓÃÁËÊý¾Ý´®Ðл¯·½·¨¡£Ò²¾ÍÊÇͨ¹ý¶ÔÏóµÄSerialize()µÄÖØÔØÀ´ÊµÏÖÎļþµÄ´æÈ¡¡£ÎÒÔÚ³ÌÐòÖвÉÓÃÁËͨ¹ýÖØÔØCObjectÀàÖеÄSerialize()µÄ·½Ê½£¬¾ßÌå×ö·¨ÊÇ:´ÓÎļþÖжÁÈ¡ÎļþÊý¾Ý´æÈëÊý×飬ÀûÓÃCArchiveµÄÖØÔØÔËËã·û << ,½«Êý×éÊý¾Ý¶ÁÈë´æ£¬¶ø´æÊý¾Ý¹ý³ÌÓëÆäÏà·´¡£ 6¡¢½ÓÊÕÊý¾ÝÅжÏÊÇ·ñ´«ÊäÍê±ÏµÄ·½·¨
Îļþ½ÓÊÜÊý¾ÝʱÔõÑù²ÅÄÜÅжÏÒѾ½ÓÊÜÍê±ÏÄØ£¿ÎÒ²ÉÓõķ½·¨ÊÇÔÚ´«Êä°üÉϼӱê¼ÇλµÄ·½·¨¡£Ã¿·¢ËÍÒ»¸öÊý¾Ý°ü£¬×ÜÔÚ×îÇ°Ãæ¼ÓÒ»¸öλm_WEnd,Èç¹û±ê¼ÇΪ0£¬ËµÃ÷δ´«ÊäÍê±Ï£¬ÒÔºó»¹ÓÐÊý¾Ý´«Ë͹ýÀ´£¬Èç¹û±ê¼ÇΪ1£¬ËµÃ÷ÒѾ´«ÊäÍê±Ï£¬¿ÉÒÔ½øÐÐһЩºóÐø¹¤×÷¡£¶øÁíÒ»¶Ë£¬Ã¿½ÓÊÜÒ»¸öÊý¾Ý°ü£¬¾Í¼ì²éÒÔϸñê¼Ç룬ÒÔÈ·¶¨ÊÇ·ñ´«ÊäÍê±Ï¡£
ËÄ¡¢ÊµÑéÔËÐвâÊÔ
1¡¢½¨Á¢·þÎñÆ÷
ÓÃÓÚ½¨Á¢·þÎñÆ÷ ÓÃÓÚ¿Í»§¶ËÁ¬½Ó ÓÃÓÚ·¢ËÍÎļþ ÓÃÓÚ½ÓÊÕÎļþ
2¡¢¿Í»§¶Ë½¨Á¢Á¬½Ó
ÓÃÓÚÏÔʾ״̬ .רҵ.רע.
3¡¢·¢ËÍÎļþ a¡¢¿Í»§¶Ë·¢ËÍ
b¡¢·þÎñÆ÷¶Ë½ÓÊÕ
.רҵ.רע.
4¡¢³É¹¦·¢ËÍ
.רҵ.רע.
Ïà¹ØÍÆ¼ö£º