pythonʹÓÃSocketServers
pythonʹÓÃSocketServers
SocketServersÄ£¿éΪһ×ésocket·þÎñÀඨÒåÁËÒ»¸ö»ùÀ࣬Õâ×éÀàѹËõºÍÒþ²ØÁ˼àÌý¡¢½ÓÊܺʹ¦Àí½øÈëµÄsocketÁ¬½ÓµÄϸ½Ú¡£
1¡¢SocketServers¼Ò×å
TCPServerºÍUDPServer¶¼ÊÇSocketServerµÄ×ÓÀ࣬ËüÃÇ·Ö±ð´¦ÀíTCPºÍUDPÐÅÏ¢¡£
×¢Ò⣺SocketServerÒ²ÌṩUnixStreamServer(TCPServerµÄ×ÓÀà)ºÍUNIXdatagramServer(UDPServerµÄ×ÓÀà)£¬ËüÃǶ¼ÈçͬÆä¸¸ÀàÒ»Ñù³ýÁËÔÚ´´½¨¼àÌýsocketʱʹÓÃAF_UNIX´úÌæÁËAF_INET¡£
ĬÈÏÇé¿öÏ£¬socket·þÎñÒ»´Î´¦ÀíÒ»¸öÁ¬½Ó£¬µ«ÊÇÄã¿ÉÒÔʹÓÃThreadingMixINºÍForkingMixInÀàÀ´´´½¨ÈÎÒ»SocketServerµÄÏ̺߳Í×Ó½ø³Ì¡£Êµ¼ÊÉÏ£¬SocketServerÄ£¿éÌṩÁËһЩ¶ÔЩÓÐÓõÄÀàÀ´½â¾öÄãµÄÂé·³£¬ËüÃÇÊÇ£ºForkingUDPServer¡¢ForkingTCPServer¡¢ThreadingUDPServer¡¢ThreadingTCPServer¡¢ThreadingUnixStreamServerºÍThreadingUnixDatagramServer¡£
SocketServerÒÔͨ³£µÄ·½·¨´¦Àí½øÈëµÄÁ¬½Ó£»ÒªÊ¹Ëü¸üÓÐÓã¬ÄãÓ¦¸ÃÌṩÄã×Ô¼ºµÄÇëÇó´¦ÀíÆ÷Àà¸øËüÒÔ±ãËü´«µÝÒ»¸ösocketÈ¥´¦Àí¡£SocketServerÄ£¿éÖеÄBaseRequestHandlerÀàÊÇËùÓÐÇëÇó´¦ÀíÆ÷µÄ¸¸Àà¡£¼ÙÉ裬ÀýÈçÄãÐèҪдһ¸ö¶àÏ̵߳ĵç×ÓÓʼþ·þÎñÆ÷£¬Ê×ÏÈÄãÒª´´½¨Ò»¸öMailRequestHandler£¬ËüÊÇBaseRequestHandlerµÄ×ÓÀ࣬Ȼºó°ÑËü´«µÝ¸øÒ»¸öд´½¨µÄSocketServer:
import SocketServer
...#´´½¨ÄãµÄMailRequestHandler
addr=('220.172.20.6',25) #¼àÌýµÄµØÖ·ºÍ¶Ë¿Ú
server=SocketServer.ThreadingTCPServer(addr,MailRequestHandler)
server.serve_forever()
ÿ´ÎÒ»¸öеÄÁ¬½Óµ½À´Ê±£¬Õâ¸öserver´´½¨Ò»¸öеÄMailRequestHandlerʵÀý²¢µ÷ÓÃËüµÄhandle()·½·¨À´´¦ÀíÕâ¸öеÄÇëÇó¡£ÒòΪserver¼Ì³Ð×ÔThreadingTCPServer£¬¶ÔÓÚÿ¸öеÄÇëÇóËü¶¼Æô¶¯Ò»¸öµ¥¶ÀµÄÏß³ÌÀ´´¦ÀíÕâ¸öÇëÇó£¬ÒÔ±ãÓÚ¶à¸öÇëÇóÄܹ»±»Í¬Ê±´¦Àí¡£Èç¹ûÓÃhandle_request()´úÌæserver_forever£¬Ëü½«Ò»¸öÒ»¸öµÄ´¦ÀíÁ¬½ÓÇëÇó¡£server_forever Ö»ÊÇ·´¸´µ÷ÓÃhandle_request¶øÒÑ¡£
Ò»°ãÀ´Ëµ£¬ÄãÖ»ÐèʹÓÃsocket·þÎñÖ®Ò»£¬µ«ÊÇÈç¹ûÄãÐèÒª´´½¨Äã×Ô¼ºµÄ×ÓÀàµÄ»°£¬Äã¿ÉÒÔ¸²¸ÇÎÒÃÇÏÂÃæÌáµ½µÄ·½·¨À´¶¨ÖÆËü¡£
µ±·þÎñ±»µÚÒ»´Î´´½¨µÄʱºò£¬__init__º¯Êýµ÷ÓÃserver_bind()·½·¨À´°ó¶¨¼àÌýsocket(self.socket)µ½ÕýÈ·µÄµØÖ·(self.server_address)¡£È»ºóµ÷ÓÃserver_activate()À´¼¤»îÕâ¸ö·þÎñ(ĬÈÏÇé¿öÏ£¬µ÷ÓÃsocketµÄlisten·½·¨)¡£
Õâ¸ösocket·þÎñ²»×öÈκÎÊÂÇéÖ±µ½µ÷ÓÃÁËhandle_request»òserve_forever·½·¨¡£handle_requestµ÷ÓÃget_r
Ïà¹ØÎĵµ£º
PythonÖÐÓÐËÄÖÖÄÚ½¨µÄÊý¾Ý½á¹¹£ºList£¬Tuple£¬Dictionary£¬Set¡£±¾ÎÄÖ÷Òª½éÉÜList¡£
ListÊÇÓÃÀ´´æ·ÅÒ»×é¶ÔÏóÐòÁС£¿ÉÒÔÏñlistÖÐÌí¼ÓÔªËØ¡¢É¾³ýÔªËØ£¬Í¬Ê±Ò²¿ÉÒÔÏñ·ÃÎÊÊý×éÒ»Ñù·ÃÎÊlist¡£ListÊǿɱäµÄÊý¾ÝÀàÐÍ¡£
ÏÂÃæ£¬¸ø³öÒ»×élistµÄÊ¹Ó ......
¶à¸öÖ´ÐÐÏ߳̾³£Òª¹²ÏíÊý¾Ý£¬Èç¹û½ö½ö¶ÁÈ¡¹²ÏíÊý¾Ý»¹ºÃ£¬µ«ÊÇÈç¹û¶à¸öÏß³ÌÒªÐ޸Ĺ²ÏíÊý¾ÝµÄ»°¾Í¿ÉÄܳöÏÖÎÞ·¨Ô¤ÁϵĽá¹û¡£
¼ÙÈçÁ½¸öÏ̶߳ÔÏót1ºÍt2¶¼Òª¶ÔÊýÖµnum=0½øÐÐÔö1ÔËË㣬ÄÇôt1ºÍt2¶¼¸÷¶ÔnumÐÞ¸Ä10´ÎµÄ»°£¬ÄÇônum×îÖյĽá¹ûÓ¦¸ÃΪ20¡£µ«ÊÇÈç¹ûµ±t1È¡µÃnumµÄֵʱ£¨¼ÙÈç´ËʱnumΪ0£©£¬ÏµÍ³°Ñt1µ ......
·¢
Ïֺܶ๫˾ҪÇóÕÆÎÕһÎű¾ÓïÑÔ£¬Ò»Ö±Ò²Ïë¸ã¸ãÕâ¸ö£¬¿´C++£¬Linux
C±à³ÌÒ²Ö»ÊÇΪÁ˶Ôϵͳ¸ü¼ÓµÄÁ˽⣬°¦£¬ÎҵŤ×÷¶¨Î»ºÃÏñÒ»Ö±¶¼²»ÔõôÃ÷È·£¬ÊÇÒª¸ã¸ö×Ô¼º×îÉó¤µÄÁË£¬ÒÔºóÓÐʱ¼äÔÙ¸ãlinuxC£¬ÕÒ¹¤×÷µÚһλ¡£¡£¡£¹¤
×÷»ù±¾¶¨Î»ÔÚ Java+python£¬´ó²¿·Ö¹«Ë¾Ò²²»»áÒªÇóÒ»¸öÈ˼È×öJavaÒ²×öC++¡£ÔÙ˵ÕâÓïÑÔÒ²ÊÇ´ ......
from: http://www.cnblogs.com/dahuzizyd/archive/2005/03/01/111006.html
pythonÖ§³ÖÃæÏò¶ÔÏóµÄ±à³Ì·ç¸ñ£¬ÕâÀïÖ÷Ҫ˵˵pythonÖеĶà¼Ì³Ð£º
ÏÂÃæµÄ´úÂëʹÓÃpython2.4£¬°²×°ºóʹÓÃidleµÄIDE¿ª·¢»·¾³£¨ËµÊÇIDE £¬±ÈÆðdelphi,VS.netµÈ¼òµ¥µÃÌ«¶àÁË)
´ÓFile-New²Ëµ¥½¨Á¢Ò»¸ö.pyÎļþ£¬Ð´ÏÂÃæµÄ´úÂ룺
class SuperCl ......