PythonÖÐreactor,factory,protocolµÄѧϰ±Ê¼Ç
PythonÖÐreactor,factory,protocolµÄѧϰ±Ê¼Ç
×îΪ¼òµ¥µÄÇé¿öÏ£¬³ýÁËÁ˽âÇåreactorµÄ¼òµ¥Ê¹Óã¬Ä㻹ҪÁ˽âProtocolºÍFactory¡£ËüÃÇ×îÖÕ¶¼»áÓÉreactorµÄÕìÌý½¨Á¢ºÍrunÀ´Í³Ò»µ÷¶ÈÆðÀ´¡£
½¨Á¢·þÎñÆ÷µÄµÚÒ»¸öÒª½â¾öµÄÎÊÌâ¾ÍÊÇ·þÎñÓëÍâ½çµÄ½»Á÷ÐÒé¡£ÐÒéµÄ¶¨ÒåÔÚtwistedÖÐÊÇͨ¹ý¼Ì³Ðtwisted.internet.protocol.ProtocolÀàÀ´ÊµÏֵġ£ÔÚÐÒéÖÐÄã¿ÉÒÔ¶¨ÒåÁ¬½Ó¡¢Êý¾Ý½ÓÊÕ¡¢¶Ï¿ªÁ¬½ÓµÈһϵÁеÄʼþÈç¹û½øÐÐÏìÓ¦¡£µ«ÊǶÔÓÚËùÓÐÁ¬½ÓÉÏÀ´µÄÐÒéµÄ½¨Á¢¡¢³Ö¾ÃÅäÖÃÊý¾ÝµÄ´æ´¢ÕâÑùµÄÄÚÈݲ¢²»»á±£´æÔÚÐÒéÖС£
³Ö¾ÃÅäÖÃÊý¾ÝµÄ´æ´¢Í¨³£¶¼»á±£´æÔÚ¹¤³§Àï¡£
¹¤³§µÄ¶¨ÒåÔÚtwistedÖÐÊÇͨ¹ý¼Ì³Ðtwisted.internet.protocol.FactoryÀàÀ´ÊµÏֵġ£twistedÌṩÁËȱʡµÄ¹¤³§ÊµÏÖ×îΪÆÕͨµÄÐèÇó¡£Ëü»áʵÀý»¯Ã¿¸öÐÒ飬²¢ÇÒͨ¹ýÉèÖÃÿ¸öÐÒéÖÐfactoryÊôÐÔÀ´Ê¹ÐÒé¿ÉÒÔʹÓõ½Ëü×Ô¼º£¬×öÕâ¸öÉèÖõÄ×÷ÓþÍÊÇÈÃÐÒéÔÚ½øÐд¦ÀíÁ¬½ÓÊý¾Ýʱ¿ÉÒÔʹÓõ½¹¤³§Öд洢µÄ³Ö¾ÃÅäÖÃÊý¾Ý¡£¹¤³§µÄÆô¶¯ÊÇÐèÒªreactorÕæÊµµÄ½¨Á¢ÕìÌý²¢Æô¶¯²Å¿ÉÒÔʵÏֵġ£
reactorÕìÌýµÄ½¨Á¢¿ÉÒԲο¼ twisted.internet.interfaces.IReactorTCP.listenTCP¡£ÕâʱÎÒÃÇÏÈֻ˵½¨Á¢TCP·þÎñÆ÷µÄÕìÌý£¬Èç¹ûÄãÐèÒªÆäËüÖÖÀàµÄÕìÌý½¨Á¢²Î¿¼IReactor*.listen*ϵÁÐAPI¡£
×ܽáһϣ¬ÎÒÃÇÊéдһ¸ötwistedµÄDaemon£¬ÊµÖÊÉÏ»á¹Ø×¢Èý¸ö²ã´ÎµÄ¶ÔÏó¡£ËüÃÇ»¥Ïà¿ÉÅäÖ㬿ɶÀÁ¢¿ª·¢£¬Ö»ÐèҪͨ¹ý¼òµ¥µÄµ÷ÓÃÅäÖþͿɽáºÏʹÓᣵÚÒ»²ã´Î¾ÍÊÇÕìÌýµÄ½¨Á¢¡¢¹¤³§µÄ³õʼ»¯¡¢·þÎñÆ÷µÄÔËÐУ¬ËüÐèÒªreactorµÄ¿ª·¢¡£µÚ¶þ¸ö²ã´Î¾ÍÊÇ·þÎñµÄ³õʼ»¯¡¢Óû§Á¬½ÓµÄ½¨Á¢¡¢³Ö¾ÃÅäÖÃÊý¾ÝµÄ´æ´¢¡¢ÐÒéµÄʵÀý»¯£¬ËüÐèÒªfactoryµÄ¿ª·¢¡£µÚÈý¸ö²ã´Î¾ÍÊÇÓû§Á¬½Ó½¨Á¢ºóµÄʼþ´¦Àí£¬Õâ¾ÍÐèÒªprotocolµÄ¿ª·¢ÁË¡£
-------------------------------------------------------------------------------------------------------------------------
ÉÏÃæÊÇÒýÓñðÈ˵ϰ£¬ÏÂÃæÊÇ×Ô¼ºµÄѧϰ£º
Ò»¡¢
protocol£ºÄÚ²¿ÊµÏÖµÄÖ÷ÒªÊÇÁ¬½ÓÔÚͨÐÅʱµÄ¶¯×÷£»
ÄÚ²¿ÓÐtransport£¬¿É½øÐÐwrite(), getpeer()(host,port)
&
Ïà¹ØÎĵµ£º
µ±pythonÖм䴦Àí·ÇASCII±àÂëʱ£¬¾³£»á³öÏÖÈçÏ´íÎó£º
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
0x??Êdz¬³ö128µÄÊý×Ö£¬pythonÔÚĬÈϵÄÇé¿öÏÂÈÏΪÓïÑԵıàÂëÊÇascii±àÂ룬ËùÒÔÎÞ·¨´¦ÀíÆäËû±àÂ룬ÐèÒªÉèÖÃpythonµÄĬÈϱàÂëΪËùÐèÒªµÄ±àÂë¡£
Ò»¸ö½â¾öµÄ·½°¸ÊÇ ......
[Ô´´]PythonÄÚ´æÐ¹Â©²é¿´Æ÷ʵÏÖ
by AKara 2009-04-23 @ http://blog.csdn.net/akara @ akaras@163.com
---------------------------------------------------------------------
Ϊ¸üºÃ¶¨Î»PythonÄÚ´æÐ¹Â©Çé¿ö£¬Ð´ÁËÒ»¸öеÄPythonÄÚ´æÐ¹Â©²é¿´Æ÷Ä£¿é¡£
Ä£¿éÓÐÈçϹ¦ÄÜ£º
* ½«ËùÓ ......
»°ËµPython£¨¶þ£©
×Ô´ÓС°×ÉÏÍêµÚÒ»¿Î£¬Python¼òÖ±³ÉÁËËûµÄ¿ÆÑ§¼ÆËãÆ÷¡£Ã¿ÌìÔçÉÏ£¬Ð¡°××ÜÊDz»Íü“Á·Ï°”Ò»ÏÂPython¡£
>>> 10000*1.2**40
14697715.679690843
“ºÙºÙ£¬ÎÒ·¢´ïÁË£¡”С°×ÔÚɵЦ×Å£¬ºÃÏñÔÚ×öÃΣ¬“ËÄÊ®Äêºó¾ÍÊÇÒÚÍò¸»ÎÌÀ²!”
С²ËÇÃÁËÇÃС°×µ ......
1¡¢strÀàÐÍ¿ÉÒÔÀí½âΪһ¸ö¶þ½øÖÆblock£¬»òmultibyte
2¡¢multibyte_str.decode("<multibyte_encode_method>") -> unicode
3¡¢unicode_str.encode("<multibyte_encode_method>") -> multibyte_str(binary block)
4¡¢unicode_str µÄ²Ù×÷²ÎÊýҲӦΪunicode£¬È磺unicode_str.find("Ñù±¾".deco ......