ÒÔǰΪij´óÐÍͨÐÅÏîÄ¿¿ª·¢ÁËÒ»Ì×ͨÓà Windows Socket TCP µ×²ãͨÐÅ×é¼þ£¬×é¼þ´úºÅΪ HP-Socket¡£ÏÖÔÚ°Ñ HP-Socket µÄËùÓдúÂëÏò´óÖÚ¹«¿ª£¬Ï£ÍûÄܶԴó¼ÒÓÐËù°ïÖú£»ÁíÍ⣬ΪÁËÈôó¼ÒÄܸü·½±ãµÄѧϰ HP-Socket£¬Òò´Ë¾«ÐÄÖÆ×÷ÁËÒ»¸ö¹¦ÄܲâÊÔʾÀý£¨Test Echo£©ºÍÒ»¸öÐÔÄܲâÊÔʾÀý£¨Test Echo-PFM£©£¬´ó¼Ò¿ÉÒÔͨ¹ýÕâÁ½¸ö²âÊÔʾÀýÈëÊÖ£¬Ñ¸ËÙÕÆÎÕ×é¼þµÄÉè¼ÆË¼ÏëºÍʹÓ÷½·¨¡£HP-Socket °üº¬·þÎñ¶Ë×é¼þ£¨IOCP Ä£ÐÍ£©ºÍ¿Í»§¶Ë×é¼þ£¨Event Select Ä£ÐÍ£©£¬¾ß±¸ÒÔÏÂÖØÒªÌØµã£º
ͨÓÃÐÔ
ͨÐÅ×é¼þµÄΨһְÔð¾ÍÊǽÓÊܺͷ¢ËÍ×Ö½ÚÁ÷£¬¾ø¶Ô²»ÄܲÎÓëÉϲãÐÒé½âÎöµÈ¹¤×÷£»
ÓëÉϲãʹÓÃÕß½âñî¡¢»¥²»ÒÀÀµ£¬×é¼þÓëʹÓÃÕßͨ¹ý²Ù×÷½Ó¿ÚºÍ¼àÆ÷½Ó¿Ú½øÐн»»¥£¬×é¼þʵÏÖ²Ù×÷½Ó¿ÚΪÉϲãÌṩ²Ù×÷·½·¨£»Ê¹ÓÃÕßʵÏÖ¼àÆ÷½Ó¿Ú°Ñ×Ô¼º×¢²áΪ×é¼þµÄ Listener£¬½ÓÊÕ×é¼þ֪ͨ¡£Òò´Ë£¬ÈκÎʹÓÃÕßֻҪʵÏÖÁ˼àÆ÷½Ó¿Ú¶¼¿ÉÒÔʹÓÃ×é¼þ£»ÁíÒ»·½Ã棬ÉõÖÁ¿ÉÒÔ×Ô¼ºÖØÐÂдһ¸öʵÏÖ·½Ê½ÍêÈ«²»Í¬µÄ×é¼þʵÏÖ¸øÊ¹ÓÃÕßµ÷Óã¬Ö»Òª¸Ã×é¼þ×ñ´Ó×é¼þµÄ²Ù×÷½Ó¿Ú£¬ÕâÒ²ÊÇ DIP Éè¼ÆÔÔòµÄÌåÏÖ¡£
¿ÉÓÃÐÔ
¿ÉÓÃÐÔ¶ÔËùÓÐͨÓÃ×é¼þ¶¼ÊÇÖÁ¹ØÖØÒªµÄ£¬Èç¹ûÌ«ÄÑÓû¹²»Èç×Ô¼ºÖØÍ·Ð´Ò»¸öÀ´µÃ·½±ã¡£Òò´Ë£¬×é¼þµÄ²Ù×÷½Ó¿ÚºÍ¼àÆ÷½Ó¿ÚÉè¼ÆµÃ¾¡Á¿¼òµ¥Ò×Óã¨Í¨Ë×À´Ëµ¾ÍÊÇ¡°Éµ¹Ï»¯¡±£©£¬ÕâÁ½¸ö½Ó¿ÚµÄÖ÷Òª·½·¨¾ù²»³¬¹ý 5 ¸ö¡£ÁíÍ⣬×é¼þÍêÈ«·â×°ÁËËùÓеĵײã Socket ͨÐÅ£¬ÉϲãÓ¦Óÿ´²»µ½ÈκÎͨÐÅϸ½Ú£¬²»±ØÒ²²»ÄܸÉÔ¤ÈκÎͨÐŲÙ×÷£¬Socket Á¬½Ó±»³éÏóΪ Connection ID£¬¸Ã²ÎÊý×÷ΪÁ¬½Ó±êʶÌṩ¸øÉϲãÓ¦ÓÃʶ±ð²»Í¬µÄÁ¬½Ó¡£
¸ßÐÔÄÜ
×÷Ϊµ×²ãµÄͨÓÃ×é¼þ£¬ÐÔÄÜÎÊÌâÊDZØÐ뿼Âǵ쬾ø¶Ô²»ÄܳÉΪϵͳµÄÆ¿¾±¡£¶øÁíÒ»·½Ã棬´Óʵ¼Ê³ö·¢£¬¸ù¾Ý¿Í»§¶Ë×é¼þÓë·þÎñ¶Ë×é¼þµÄÐÔÄÜÒªÇó²ÉÓò»Í¬µÄ Socket Ä£ÐÍ¡£×é¼þÔÚÉè¼ÆÉϳä·Ö¿¼ÂÇÁËÐÔÄÜ¡¢ÏÖʵʹÓÃÇé¾°¡¢¿ÉÓÃÐÔºÍʵÏÖ¸´ÔÓÐÔµÈÒòËØ£¬È·±£Âú×ãÐÔÄÜÒªÇóµÄͬʱÓÖ²»»áдµÃÌ«¸´ÔÓ¡£×ö³öÒÔÏÂÁ½µãÉè¼Æ¾ö²ß£º
¿Í»§¶Ë£ºÔÚµ¥¶ÀÏß³ÌÖÐʵÏÖ Socket ͨÐŽ»»¥¡£ÕâÑù¿ÉÒÔ±ÜÃâÓëÖ÷Ï̻߳òÆäËûÏß³ÌÏ໥¸ÉÈÅ£»I/O Ä£ÐÍÑ¡Ôñ Event Select ͨÐÅÄ£ÐÍ¡£
·þÎñ¶Ë£º²ÉÓà Windows ƽ̨ЧÂÊ×î¸ßµÄ IOCP ͨÐÅÄ£ÐÍ£»ÀûÓûº´æ³Ø¼¼Êõ£¬ÔÚͨÐŵĹý³ÌÖУ¬Í¨³£ÐèҪƵ·±µÄÉêÇëºÍÊÍ·ÅÄڴ滺³åÇø£¬½¨Á¢Á˶¯Ì¬»º´æ³Ø£¬ Ö»Óе±»º´æ³ØÖÐûÓпÉÓöÔÏóʱ²Å´´½¨Ð¶ÔÏ󣬶øµ±»º´æ¶ÔÏó¹ý¶àʱÔò»áѹËõ»º´æ³Ø£»ÁíÍ⣬×é¼þµÄ¶¯Ì¬ÄÚ´æÍ¨¹ý˽Óжѣ¨Private Heap£©»úÖÆ·ÖÅ䣬±ÜÃâÓë new / malloc ¾ºÕùͬʱÓÖ¼õÉÙÄÚ´æ¿Õ¶´¡£
ÉìËõÐÔ
¿ÉÒÔ¸ù¾Ýʵ¼ÊµÄʹÓû·¾³ÒªÇóÉèÖÃ×é¼þµÄ¸÷ÏîÐÔÄܲÎÊý£¨È磺¹¤×÷Ï̵߳ÄÊýÁ¿¡¢¸÷ÖÖ»º´æ³ØµÄ´óС¡¢ÊÕ·¢»º³åÇøµÄ´óС¡¢Socket ¼àÌý¶ÓÁеĴóС¡¢Accep ÅÉ·¢µÄÊýÄ¿ÒÔ¼°ÐÄÌø¼ì²éµÄ¼ä¸ôµÈ£©¡£
×é¼þÏêϸ˵Ã÷£ºhttp://www.cnblogs.com/ldcsaa/archive/2013/04/15/3022178.html
=============================================
v2.1.1 ¸üУº
=============================================
> Server£º
-----------------
1¡¢IServerSocketListener È¡Ïû OnPrepareSocket(connID, socket) ֪ͨ·½·¨
2¡¢IServerSocketListener ÐÞ¸Ä OnAccept((connID, soClient) ֪ͨ·½·¨£¬Ôö¼Ó²ÎÊý¡®soClient¡¯£¬ÓÃÓÚʵÏÖÔ OnPrepareSocket(connID, socket) ֪ͨ·½·¨µÄ¹¦ÄÜ
3¡¢IServerSocketListener Ôö¼Ó OnPrepareListen(soListen) ֪ͨ·½·¨£¬ÓÃÓÚÉèÖüàÌý socket µÄ SOCKET Ñ¡Ïî
4¡¢ISocketServer Ôö¼Ó·½·¨ GetListenAddress(strAddress, usPort)£¬ÓÃÓÚ»ñÈ¡¼àÌý Socket µÄµØÖ·ÐÅÏ¢
5¡¢ISocketServer Ôö¼Ó·½·¨ GetClientAddress(connID, strAddress, usPort)£¬ÓÃÓÚij¸ö¿Í»§¶ËÁ¬½ÓµÄµØÖ·ÐÅÏ¢
6¡¢ÓÅ»¯ Socket »º´æ³ØºÍÄÚ´æ¿é»º´æ³Ø¹ÜÀí
7¡¢µ÷ÕûһЩÊôÐÔ·ÃÎÊ·½·¨µÄ·½·¨Ãû
8¡¢ÐÞ¸´BUG£ºÌØÊâÇéÐÎÏ¿ÉÄܳöÏÖËÀËøÏÖÏó
> Client£º
-----------------
1¡¢ISocketServer Ôö¼Ó·½·¨ GetLocalAddress(strAddress, usPort)£¬ÓÃÓÚ»ñÈ¡ Client Socket µÄµØÖ·ÐÅÏ¢
2¡¢ÓÅ»¯Êý¾Ý·¢ËÍ·½Ê½£¬ÌáÉýÊý¾Ý·¢ËÍЧÂÊ
> ÆäËû¸üУº
-----------------
1¡¢ÓÅ»¯ TestEcho ºÍ TestEcho-PFM ²âÊÔ³ÌÐò
3¡¢ÔÚ SocketHelper.h (.cpp) ÖÐÌí¼ÓÈô¸É°ïÖúº¯Êý
4¡¢Îª SocketHelper.h Öж¨ÒåµÄËùÓнӿڡ¢ÀàºÍ·½·¨¼ÓÈë×¢ÊÍ
À´×Ô:¿ªÔ´ÖйúÉçÇø