ÈÕÖ¾ÎÄÕÂ

2008Äê08ÔÂ13ÈÕ 23:31:52

Tracker·þÎñÆ÷Ô´Âë·ÖÎöÖ®¶þ£ºRawServerÀà- -

×÷ÕߣºÐ¡Âí¸ç

ÈÕÆÚ£º2004-5-30


ÕâÆªÎÄÕ£¬ÎÒÃÇÀ´·ÖÎö RawServer ÒÔ¼°Ò»Ð©Ïà¹ØµÄÀà¡£RawServer ÀàµÄʵÏÖ´úÂ룬ÔÚ BitTorrent ×ÓĿ¼µÄRawServer.py ÖÐ


RawServer Õâ¸öÀàµÄ×÷ÓÃÊÇʵÏÖÒ»¸öÍøÂç·þÎñÆ÷¡£¹ØÓÚÍøÂç±à³ÌµÄ֪ʶ£¬¡¶unixÍøÂç±à³Ì£º¾í1¡·ÊÇ×î¾­µäµÄÊé¼®£¬ÄãÈç¹û¶ÔÕâ¿é²»Á˽⣬½¨Òé³éʱ¼ä¿´¿´Õâ±¾Êé¡£RawServer ʵÏÖµÄÊÇÒ»ÖÖʼþ¶à·¸´ÓᢷÇ×èÈûµÄÍøÂçÄ£ÐÍ¡£ËüʹÓõÄÊÇ poll() £¨¶ø²»ÊÇÎÒÃdz£¼ûµÄselect()£¬¹ØÓÚ pollºÍselectµÄ±È½Ï£¬Ò²ÔÚ¡¶unixÍøÂç±à³Ì£º¾í1¡·ÖÐÓнéÉÜ£©º¯Êý£¬´¦Àí¹ý³Ì´óÖÂÊÇÕâÑùµÄ£º

Ê×ÏÈ´´½¨Ò»¸ö¼àÌý socket£¬È»ºó½«Õâ¸ö socket ¼ÓÈë poll µÄʼþÔ´£»

Ëæºó½øÈë·þÎñ´¦ÀíÑ­»·£¬¼´£º


µ÷Óà poll() º¯Êý£¬Õâ¸öº¯Êý»á×èÈû£¬Ö±µ½ÍøÂçÉÏÓÐijЩʼþ·¢Éú»òÕß³¬Ê±²Å·µ»Ø¸øµ÷ÓÃÕߣ»

ÔÚ poll()·µ»ØÖ®ºó£¬Ïȼì²éÒ»ÏÂÊÇ·ñÓÐûÓд¦ÀíµÄÈÎÎñ£¬Èç¹ûÓУ¬ÄÇôÏÈÍê³ÉÕâЩÈÎÎñ¡£È»ºó¸ù¾ÝʼþÀàÐͽøÐд¦Àí¡£

Èç¹ûÊÇÁ¬½ÓÇëÇ󣨼àÌý socketÉϵÄPOLLINʼþ£©µ½À´£¬Ëü acceptÕâ¸öÇëÇó£¬Èç¹û accept ³É¹¦£¬ÄÇô¾ÍºÍÒ»¸ö client½¨Á¢ÁËÁ¬½Ó£¬ÓÚÊǽ« accept() д´½¨µÄ socket ¼ÓÈë poll µÄʼþÔ´£»

Èç¹ûÔÚÒѾ­½¨Á¢µÄÁ¬½ÓÉÏ£¨Á¬½ÓsocketÉϵÄPOLLINʼþ£©£¬ÓÐÊý¾Ý¿É¶Á£¬ÄÇô½«Êý¾Ý´Ó client ¶Ë¶Á¹ýÀ´£¬×ö½øÒ»²½´¦Àí£»

Èç¹ûÒѾ­½¨Á¢µÄÁ¬½ÓÒѾ­×¼±¸ºÃ£¨Á¬½ÓsocketÉϵÄPOLLOUTʼþ£©£¬¿ÉÒÔ·¢ËÍÊý¾Ý£¬Ôò¼ì²éÊÇ·ñÓÐÊý¾ÝÐèÒª·¢ËÍ£¬Èç¹ûÓУ¬ÄÇô·¢ËÍÊý¾Ý¸ø client ¶Ë¡£


£¨ËùÒÔ£¬trackerÊÇÒ»¸öµ¥½ø³ÌµÄ·þÎñÆ÷£¬²¢Ã»ÓÐÓõ½Ï̡߳££©


Bram Cohen ÈÏΪÈí¼þµÄ¿Éά»¤ÐԷdz£ÖØÒª£¬Ê¹´úÂëÒ×ÓÚά»¤µÄÖØÒªÒ»Ìõ¾ÍÊÇÉè¼Æ¿ÉÖØÓõÄÀ࣬RawServer ÔÚÉè¼ÆµÄʱºò£¬³ä·Ö¿¼Âǵ½ÁË¿ÉÖØÓÃÐÔ£¬¼¯ÖбíÏÖÔÚÁ½¸öµØ·½£º

1¡¢ ½«ÍøÂç I/O ºÍÊý¾Ý·ÖÎö´¦Àí·ÖÀë¡£

ÍøÂç·þÎñÆ÷µÄʼþ¶à·¸´Óá¢ÍøÂçI/O ²¿·Öͨ³£Êǹ̶¨²»±äµÄ£¬¶øÊý¾ÝÔÚ¶Áȡ֮ºó£¬½øÐзÖÎö´¦ÀíµÄ¹ý³ÌÔòÊǿɱäµÄ¡£RawServer ½«¿É±äµÄÊý¾Ý´¦Àí¹¤×÷£¬½»¸øÁíÍâÒ»¸ö³éÏóµÄÀà Handler £¨Êµ¼ÊÉϲ¢Ã»ÓÐÕâôһ¸öÀࣩÀ´´¦Àí¡£±ÈÈ磬ÔÚ tracker ·þÎñÆ÷µÄʵÏÖÖУ¬¾ßÌåʹÓõľÍÊÇ HTTPHandler À࣬¶øÔÚ ÒÔºó½«Òª·ÖÎöµÄ BT client ʵÏÖ´úÂëÖУ¬Óõ½µÄ¾ßÌåµÄHandler ÊÇ Encoder Àà¡£


2¡¢ ²ÉÓÃÈÎÎñ¶ÓÁÐÀ´³éÏó³öÈÎÎñ´¦ÀíµÄ¹ý³Ì¡£

RawServerά»¤ÁËÒ»¸öÈÎÎñ¶ÓÁÐ unscheduled_tasks£¨Êµ¼ÊÊÇÒ»¸ö¶þÔª×éµÄlist£¬¶þÔª×éµÄµÚÒ»ÏîÊÇÒ»¸öº¯Êý£¬µÚ¶þÏîÊdz¬Ê±Ê±¼ä£©¡£ÔÚ³õʼ»¯µÄʱºò£¬Ê×ÏÈÏòÕâ¸ö¶ÓÁÐÖмÓÈëÒ»¸öÈÎÎñ£ºscan_for_timeouts()£¬ÕâÑù£¬Ã¿¸ôÒ»¶Îʱ¼ä£¬·þÎñÆ÷¾Í»áÈ¥¼ì²éÒ»ÏÂÊÇ·ñÓÐÁ¬½Ó³¬Ê±¡£Èç¹ûÓÐÆäËü


RawServerµÄ³ÉÔ±º¯ÊýÖУ¬¶ÔÍⱩ¶µÄÓУº


u     __init__£º£¨³õʼ»¯º¯Êý£©


u     add_task()£º

  ÔÚÈÎÎñÁбíÖÐÔö¼ÓÒ»ÏîÈÎÎñ£¨Ò»¸öÈÎÎñÊÇÒ»¸öº¯ÊýÒÔ¼°Ò»¸öÖ¸¶¨µÄ³¬Ê±Ê±¼äµÄ×éºÏ£©


u     bind()£º

  Ê×ÏÈ´´½¨Ò»¸ösocket£¬È»ºóÉèÖÃsocketµÄÊôÐÔ£º SO_REUSEADDRºÍIP_TOS,£¬ÕâÁ½¸öÊôÐԵľßÌ庬ÒåÇë²Î¿¼¡¶unixÍøÂç±à³Ì£º¾í1¡·£¬ÁíÍ⻹½« socket ÉèÖÃΪ·Ç×èÈûµÄ¡£Ïà¶ÔÓÚ×èÈûµÄ socketÀ´Ëµ£¬·Ç×èÈûµÄ socket ÔÚÍøÂç I/O ÐÔÄÜÉÏÒªÌá¸ßÐí¶à£¬µ«ÊÇÓë´Ëͬʱ£¬±à³ÌµÄ¸´ÔÓ¶ÈÒ²ÒªÌá¸ßһЩ¡£Ïó trackerÕâÖÖ¿ÉÄÜͬʱҪ´¦Àí³ÉǧÉÏÍò¸ö²¢·¢Á¬½ÓµÄ·þÎñÆ÷£¬Ö»ÄܲÉÓ÷Ç×èÈûµÄsocket¡£

  È»ºó½«¸Ã socketºÍÖ¸¶¨ipÒѾ­¶Ë¿Ú°ó¶¨£»

  ×îºó°ÑÕâ¸ösocket ¼ÓÈë pollµÄʼþÔ´¡£


u     start_connection()£º

  ¶ÔÍâÖ÷¶¯½¨Á¢Ò»¸öÁ¬½Ó£¬Õâ¸öº¯ÊýÔÚ´¦ÀíNAT´©Ô½µÄʱºòÓõ½ÁË£¬ÎÒÃǺóÃæ·ÖÎöµ½ NAT´©Ô½µÄʱºò£¬ÔÙ¾ßÌå½²½â¡£


u     listen_forever()£º

  Õâ¸öº¯ÊýµÄ¹¦ÄܾÍÊÇʵÏÖÁËÎÒÔÚÇ°ÃæÃèÊöµÄÍøÂç·þÎñÆ÷µÄ´¦Àí¹ý³Ì¡£ÎÒÃÇ¿´µ½£¬ËüΨһµÄ²ÎÊýÊÇhandler£¬handlerµÄ×÷ÓþÍÊÇ·â×°Á˶ÔÊý¾ÝµÄ¾ßÌå´¦Àí¡£

listen_forever()°Ñ¶ÔÍøÂçʼþµÄ´¦Àí¹ý³Ì£¬½»¸øÁË handle_events()¡£


ÆäËüº¯Êý£¬°üÀ¨handle_events()£¬¶¼ÊÇÄÚ²¿º¯Êý£¨Ò²¾ÍÊÇÍⲿ²»»áÖ±½ÓÀ´µ÷ÓÃÕâЩº¯Êý£©¡£PythonûÓÐc++ÄÇÑù public¡¢protected¡¢private ÕâÑùµÄ±£»¤»úÖÆ£¬pythonÀàµÄÄÚ²¿º¯ÊýÃüÃûµÄ¹ßÀýÊÇÒÔÏ»®Ïß¿ªÊ¼£¬ÀýÈç RawServer ÖÐµÄ _close_dead()µÈ¡£


u     handle_events()£º

ʼþ´¦Àí¹ý³Ì£¬Ö÷ÒªÊǸù¾ÝÈýÖÖ²»Í¬µÄÍøÂçʼþ·Ö±ð´¦Àí£¬Ò»ÊÇÁ¬½Óʼþ£¬¶þÊǶÁʼþ¡¢ÈýÊÇдʼþ¡£


if sock == self.server.fileno()


Õâ¶Î´úÂëÅжϷ¢ÉúʼþµÄsocketÊÇ·ñÊǼàÌý socket£¬Èç¹ûÊÇ£¬ÄÇô˵Ã÷ÊÇÁ¬½Óʼþ¡£

Á¬½ÓʼþµÄ´¦Àí£º

ͨ¹ý accept À´½ÓÊÜÁ¬½Ó£¬²¢½«Ð½¨Á¢µÄ socket ÉèÖÃΪ·Ç×èÈû¡£

Åжϵ±Ç°Á¬½ÓÊýÊÇ·ñÒѾ­´ïµ½ÁË×î´óÖµ£¨ÎªÁËÏÞÖÆ²¢·¢Á¬½ÓµÄÊýÄ¿£¬ÔÚ³õʼ»¯ RawServerµÄʱºò£¬ÐèÒªÖ¸¶¨×î´óÁ¬½ÓÊýÄ¿£©£¬Èç¹ûÒѾ­´ïµ½×î´óÖµ£¬ÄÇô¹Ø±ÕÕâ¸öн¨µÄÁ¬½Ó¡£

·ñÔò£¬¸ù¾ÝÐ嵀 socket ´´½¨Ò»¸ö SingleSocket ¶ÔÏ󣬣¨SingleSocket ·â×°ÁË¶Ô socketµÄ²Ù×÷¡££©½«Õâ¸ö¶ÔÏó¼ÓÈëÄÚ²¿µÄÁбísingle_socketsÖУ¬ÒÔ±¸ºóÓá£

½«Õâ¸öРsocket¼ÓÈë poll µÄʼþÔ´

×îºó£¬µ÷Óà Handler µÄexternal_connection_made() º¯Êý£¬¹ØÓÚÕâ¸öº¯Êý£¬ÔÚºóÃæ·ÖÎö HTTPHandler ʱÔÙÌÖÂÛ¡£


if (event & POLLIN) != 0:

Õâ¶Î´úÂëÅжÏÊÇ·ñÊǶÁʼþ

¶ÁʼþµÄ´¦Àí£º

Ê×ÏÈË¢ÐÂÒ»ÏÂÁ¬½ÓµÄ×îºó¸üÐÂʱ¼ä £¨last_hit£©¡£

È»ºó¶ÁÈ¡Êý¾Ý£»

Èç¹ûʲôҲû¶Áµ½£¬ÄÇô˵Ã÷Á¬½Ó±»¹Ø±ÕÁË£¨ÔÚÍøÂç±à³ÌÖУ¬Èç¹ûÒ»¸öÁ¬½ÓÕý³£µÄ±»¹Ø±Õ£¬ÄÇô£¬Ò²»á´¥·¢¶Áʼþ£¬Ö»²»¹ýʲôҲ¶Á²»µ½£©

·ñÔò£¬µ÷Óà HandlerµÄ data_came_in() º¯ÊýÀ´´¦Àí¶Áµ½µÄÊý¾Ý¡£


if (event & POLLOUT) != 0 and s.socket is not None and not s.is_flushed():

Õâ¶Î´úÂëÅжÏÊÇ·ñÊÇдʼþ£¬¶øÇÒȷʵÓÐÊý¾ÝÐèÒª·¢ËÍ¡£ÔÚÒ»¸öÁ¬½Ó¿ÉÒÔдµÄʱºò£¬¾Í»á·¢Éúдʼþ¡£

дʼþµÄ´¦Àí£º

ʵ¼Ê´úÂëÊÇÔÚ SingleSocketµÄ try_write()º¯ÊýÖС£

ÔÚÒ»¸ö·Ç×èÈûµÄÁ¬½ÓÉÏ·¢ËÍÖ¸¶¨´óСµÄÊý¾Ý£¬ºÜ¿ÉÄÜÔÚÒ»´Î·¢Ë͹ý³ÌÖУ¬Êý¾ÝûÓб»ÍêÈ«·¢ËͳöÈ¥£¨Ö»·¢ËÍÁËÒ»²¿·Ö£©¾Í·µ»ØÁË£¬ËùÒÔ£¬Ã¿´Î writeÖ®ºó£¬±ØÐëÅжÏÊÇ·ñÍêÈ«·¢ËÍÁËÊý¾Ý¡£Èç¹ûûÓз¢ËÍÍ꣬ÄÇôÏ´ÎÓжÁʼþµÄʱºò£¬»¹µÃ»ØÀ´¼ÌÐø·¢ËÍδÍêµÃÊý¾Ý¡£ÕâÒ²ÊÇÕâ¸öº¯Êý½Ð×ö try_write µÄÔ­Òò°É¡£

try_write() ÔÚ×îºó£¬ÒªÖØÐÂÉèÖà poll µÄʼþÔ´¡£Èç¹ûÊý¾ÝÈ«²¿·¢ËÍÍê±ÏÁË£¬ÄÇôֻÐèÒª¼àÌý¶Áʼþ£¨POLLIN£©·ñÔò£¬¼ÈÒª¼àÌý¶Áʼþ£¬Ò²Òª¼àÌýдʼþ£¨POLLOUT£©£¬ÕâÑù£¬Ò»µ©Á¬½Ó±äµÄ¿Éд£¬¿ÉÒÔ¼ÌÐø½«Ê£ÏµÄÊý¾Ý·¢ËͳöÈ¥¡£


u     scan_for_timeouts()£º

ÈÎÎñ´¦Àíº¯Êý£¬ËüÊ×ÏȰÑ×ÔÉí¼ÓÈëδ´¦ÀíÈÎÎñ¶ÓÁÐÖУ¬ÕâÑù£¬¾­¹ýÒ»¶Îʱ¼ä£¬¿ÉÒÔ±£Ö¤Õâ¸öº¯ÊýÔٴα»µ÷Ó㬴Ӷø´ïµ½ÖÜÆÚÐÔµ÷ÓõÄЧ¹û¡£

Ëü¼ì²éÿ¸öÁ¬½ÓÊÇ·ñ³¬¹ýÖ¸¶¨Ê±¼äûÓб»Ë¢Ð£¬Èç¹ûÊÇ£¬Ôò¸ÃÁ¬½Ó¿ÉÄÜÒѾ­½©ËÀ£¬ÄÇôËü¹Ø±ÕÕâ¸öÁ¬½Ó¡£


u     pop_unscheduled()£º

´ÓÈÎÎñÁбíÖе¯³öÒ»¸öδ´¦ÀíµÄÈÎÎñ¡£

 

Óë RawServer ÅäºÏʹÓõÄÊÇ SingleSocket À࣬ÕâÊÇÒ»¸ö¸¨ÖúÀ࣬Ö÷ҪĿµÄÊÇ·â×°¶Ô socketµÄ´¦Àí°É¡£°üÀ¨Êý¾ÝµÄ·¢ËÍ£¬¶¼½»¸øËüÀ´´¦ÀíÁË¡£Õâ¸öÀà±È½Ï¼òµ¥£¬´ó¼Ò¿ÉÒÔ×Ô¼ºÈ¥¿´£¬ÎҾͲ»ÂÞàÂÁË¡£



ÒÔÉÏÊÇ¶Ô RasServer µÄ¾ßÌåʵÏÖµÄÒ»¸ö·ÖÎö£¬¿ÉÄܶÁÕß¿´µÄ»¹ÊÇÔÎÔκýºý£¬Ã»°ì·¨£¬»¹ÊDZØÐë×Ô¼ºÈ¥¿´Ô´´úÂ룬ȻºóÔÚÓöµ½ÎÊÌâµÄʱºò£¬»ØÍ·ÔÙÀ´¿´ÕâÆªÎÄÕ£¬²Å»áÓаïÖú¡£Èç¹û²»Ç××Ô¿´Ô´Â룬ÖÕ¾¿ÊÇÖ½ÉÏ̸±ø¡£


ÎÒÃÇÔÙÀ´Ð¡½áһϡ£

RawServer ·â×°ÁËÍøÂç·þÎñÆ÷µÄʵÏÖϸ½Ú£¬ËüʵÏÖÁËÒ»ÖÖʼþ¶à·´¦Àí¡¢·Ç×èÈûµÄÍøÂçÄ£ÐÍ¡£ËüÖ÷Òª¸ºÔð½¨Á¢ÐµÄÁ¬½Ó£¬´ÓÍøÂç¶ÁÈ¡ºÍ·¢ËÍÊý¾Ý£¬¶ø¶Ô¶Áµ½µÄÊý¾ÝµÄ¾ßÌå´¦Àí¹¤×÷£¬½»¸ø Handler ÀàÀ´´¦Àí£¬´Ó¶ø°ÑÍøÂçI/OºÍÊý¾Ý´¦Àí·ÖÀ뿪À´£¬Ê¹µÃ RawServer¿ÉÒÔÖØÓá£Handler ÀàÊÇÔÚµ÷Óà listen_forever() µÄʱºò£¬Óɵ÷ÓÃÕß´«µÝ½øÀ´µÄ£¬¾ßÌåµ½ tracker·þÎñÆ÷£¬¾ÍÊÇHTTPHandler¡£ÓÐÁË RawServer£¬tracker ¾Í¿ÉÒÔ×÷Ϊһ¸öÍøÂç·þÎñÆ÷ÔËÐÐÁË¡£

ÏÂÒ»½Ú£¬ÎÒÃÇ¿ªÊ¼·ÖÎö¾ßÌåʵÏÖ tracker HTTP ЭÒé´¦ÀíµÄ HTTPHandlerÀàºÍTrackerÀà

Tags£º BT  

Àà±ð£º ÍøÂçЭÒé |  ÆÀÂÛ(3) |  ä¯ÀÀ(1889) |  ÊÕ²Ø
3Â¥ [ÄäÃû]ѧÀúÖ°³Æ 2009Äê10ÔÂ30ÈÕ 09:31:25 Says:
Äú»¹ÔÚΪѧÀú²»¹»¡¢Ã»ÓÐÖ°Òµ×ʸñÖ¤¶øÕÒ²»µ½ºÏÊʵŤ×÷¶ø¿àÄÕÂð£¿ÎÒÃÇΪÄúÅÅÓǽâÄÑ£¬ÎªÄúÌṩ¹ú¼Ê¡¢¹úÄÚÖ°Òµ×ʸñÈÏÖ¤·þÎñ£¬Ãâ·ÑÌṩ×Éѯ·þÎñ¡£ÏêϸÇëµÇ¼£ºhttp://www.szpx6688.cn,ÈÈÏߵ绰£º0755-83190298£¬QQ295549145£¬358526773
2Â¥ [ÄäÃû]ÉϺ£±±´óÇàÄñ 2009Äê10ÔÂ18ÈÕ 10:26:00 Says:
ÊнÌÓý¾ÖÓë±±´ó¸½ÊôʵÑéѧУÕýʽǩԼ£¬±±´ó¸½ÊôʵÑéѧУ½«´Ó½ñÄêÆðÕýʽ½¨Á¢¹«°ì¸ßÖв¿£¬³Ðµ£ÊÐÕÐÉú¿¼Ê԰칫ÊÒÕý¹æÂ¼È¡´ïµ½¹æ¶¨Â¼È¡·ÖÊýÏߵĸÃÊл§¼®¸ßÖÐÉúµÄ½ÌÓý½Ìѧ¹¤×÷£¬Ã¿Ä꽫ÓÃÕþ¸®²ÆÕþ¾­·ÑÅàÑø400Ãû¹«°ì¸ßÖÐÉú¡£´Ë¾Ù¼ÈÊÇÊÐÕþ¸®·¢Õ¹½ÌÓýÊÂÒµ¡¢½â·Å˼Ï롢ʵÏÖ»ù´¡½ÌÓýÌåÖÆ¸Ä¸ïµÄÖØ´ó´´Ð£¬Ò²ÊǶԱ±´óÇàÄñÆìϱ±´ó¸½ÊôʵÑéѧУ5ÄêÐÁÇÚ°ì»ù´¡½ÌÓý×ÛºÏʵÁ¦µÄ³ä·Ö¿Ï¶¨£¬±Ø½«Ô츣ÓÚÈËÃñ¡£ Ç©Êð´Ë´ÎÕþ¸®Î¯ÍаìѧЭÒéµÄË«·½´ú±í·Ö±ðÊÇÊнÌÓý¾Ö¾Ö³¤ÖÓÒÔ¿¡£¬±±´óÇàÄñ¼¯ÍŸ±×ܲᢱ±´óÇàÄñ½ÌÓý¹ÜÀí¹«Ë¾×ܲÃÕÅÍòÖС£ÕÕ´ËЭÒ飬±±´ó¸½ÊôʵÑéѧУ½«´Ó½ñÄêÆð£¬Á¬Ðø3Ä꣬ÿÄ꽨Á¢8¸ö¹«°ì¸ßÖа࣬ÿÄêÕÐÊÕ´ïµ½ÊÐÕÐÉú¿¼Ê԰칫ÊÒÕý¹æÂ¼È¡·ÖÊýÏßµÄ400Ãû¸ÃÊл§¼®µÄ¸ßÖÐÉúÀ´Ð£¾Í¶Á£¬ÆäÖаüÀ¨300ÃûÕýʽ¼ȡÉú¡¢100ÃûÔñУÉú¡£ÊнÌÓý¾ÖÔò½«ÏàÓ¦µÄÕý³£½ÌÓýÊÂÒµ·Ñ100%²¦¸ø¸ÃУ×÷ΪίÍаìѧ·ÑÓã¬ÔñУÉúµÄ·ÑÓÃÒ²100%²¦½»¸ø¸ÃУ֧Å䡣Ϊ±£Ö¤½ÌѧÖÊÁ¿£¬ÊнÌÓý¾Ö»¹Ñ¡ÅÉÊÐÒ»ÖÐÊýÃû½ÌʦºÍ¹ÜÀíÈËÔ±µ½¸ÃУ¸ºÔðºÍ²ÎÓë¸ßÖв¿½ÌÓý½Ìѧ¹ÜÀí£¬ÆäÖÐÒ»È˵£ÈθÃУ¸±Ð£³¤£¬¶ÀÁ¢¸ºÔð¸ÃУ¸ßÖв¿È«Ã湤×÷¡£ÕâÑùÒ»À´£¬¸ÃУ³¤ÆÚ»ýÀÛÆðÀ´µÄ½Ìѧ³¡µØ¡¢ÅäÌ×ÉèÊ©ºÍʦ×ÊÁ¦Á¿ÓÅÊÆ¾ÍµÃµ½Á˳ä·Ö·¢»Ó£¬ÉúÔ´ÖÊÁ¿Ò²µÃµ½Á˺ܺõı£Ö¤¡£ ÕÅÍòÖнéÉÜ˵£¬´Ë¾ÙÒâÒåÖØ´ó¡£ÊÐÕþ¸®×÷³öÕâÖÖÑ¡ÔñºÍ¸Ä¸ï£¬ÊÇÏÂÁ˺ܴó¾öÐĵģ¬Ò²È·Êµ¿´µ½Á˱±´ó¸½ÊôʵÑéѧУµÄ°ìѧʵÁ¦£¬ÈÏ¿ÉÁ˸ÃУµÄÌØÉ«½ÌÓý¡¢¾«Æ·½ÌÓýºÍËØÖʽÌÓý¡£Õþ¸®½«²ÆÕþ²¦¿î½»µ½Ãñ°ìѧУÐ˰칫°ì¸ßÖа࣬Êǵ÷¶¯Õþ¸®ºÍÃñÆóÁ½¸ö»ý¼«ÐÔ£¬½ø¶øµ÷¶¯½Ìʦ¶ÓÎéµÄ»ý¼«ÐÔ£»²¢ÇÒ½«¹«°ì¿¼ÊÔÉúÔ´»ù´¡ºÃ¡¢ÖÊÁ¿¸ßµÄÓÅÊÆ£¬Óë¸ÃУϵÁл¯µÄÌØÉ«¡¢¾«Æ·ºÍËØÖʽÌÓýÓÅÊÆÇ¿ÓÐÁ¦µØ½áºÏÆðÀ´ÁË£¬±Ø½«»áÅàÑø³ö¸üΪ³öÉ«µÄ¸ßÖбÏÒµÉú£¬ÊäË͸øÖصã¸ßУºÍÉç»á¡£ ͬʱ£¬´Ë¾ÙÒ²¸ø±±´ó¸½ÊôʵÑéѧУ´øÀ´ÁËеķ¢Õ¹Æõ»ú£¬Í»ÆÆÁ˹ýÈ¥Ãñ°ì»ù´¡½ÌÓýѧУÉúÔ´Ðë×îºóÅŶӵį¿¾±£¬ÀûÓÚΪÉç»á×ö³ö¸üÍ»³öµÄ³É¼¨£¬¸ø¸ÃУ´øÀ´ÐµİìÑ§Ð§Òæ¡£Ëû±íʾ£¬ÕâÒ»ºÏ×÷µÄ½á¹ûÊǶàÓ®µÄ¡£±±´ó¸½ÊôʵÑéѧУµÄ¡°±£Ö¤»ù´¡¡¢×ðÖØ¸öÐÔ¡¢½¡È«È˸ñ¡¢ºÍг·¢Õ¹¡±È˱¾»¯½ÌÓýģʽ½«»áÓëÒ»ÖС°ÈýÈ«½ÌÓý¡±ÌåϵºÍг½áºÏ£¬Ê¹¾«Æ·½ÌÓýÓ빫°ìÓÅÖʽÌÓýʵÏÖÍêÃÀ¼æÈÝ£¬Îª¸ßÖжνÌÓýµÄÈ«ÃæÓÅ»¯ºÍ³É²Å¿Õ¼äµÄ½øÒ»²½¿ªÍØ×ö³ö¸ü´ó¹±Ïס£ ±±´óÇàÄñÍøÖ·£ºwww.itbdqn.com ×Éѯµç»°£º021-51197466 24Сʱ×Éѯµç»°£º13564300818 Ç®ÀÏʦ
1Â¥ [ÄäÃû]Öйú¸£Àû²ÊƱ¹Ù· 2009Äê09ÔÂ13ÈÕ 07:31:00 Says:
Öйú¸£Àû²ÊƱ¹Ù·½Íø(http://www.cpw658.cnÖÂÁ¦ÓÚ´òÔìÖйú¸£Àû²ÊƱºÍÖйúÌåÓý²ÊƱµÄרҵ²ÊƱÃÅ»§ÍøÕ¾¡£ÎªÄúÌṩ¸£Àû²ÊƱºÍÌåÓý²ÊƱµÄ²ÊƱԤ²â¡¢²ÊƱ¿ª½±¡¢²ÊƱÐÂÎÅ×ÊѶºÍ²ÊƱÈí¼þÏÂÔØµÈ·þÎñ¡£Äú»¹¿ÉÒÔµ½Öйú¸£Àû²ÊƱ¹Ù·½ÍøµÄ²ÊƱÂÛ̳Óë²ÊÃñÃÇ·ÖÏíÄúµÄ²ÊƱÐĵᣠÖйú²ÊƱÂÛ̳ÌṩÖйú¸£Àû²ÊƱ˫ɫÇò×ßÊÆÍ¼,˫ɫÇò¿ª½±¹«¸æ,¸£²Ê3DÔ¤²â,ÆßÐDzÊÑ¡ºÅ,ÖйúÌåÓý²ÊƱÅÅÁÐ3,Ìå²Ê´óÀÖ͸·ÖÎöµÈ²ÊƱ×ÊѶ,ÊÇ²ÊÆ±ÐÐÒµÃâ·ÑÔ¤²â·ÖÎöÍøÕ¾¡£ ˫ɫÇò,¸£Àû²ÊƱ˫ɫÇò¿ª½±,¸£Àû²ÊƱ,˫ɫÇò,3d,¸£Àû²ÊƱ˫ɫÇò.¸£²Ê3D,Öйú¸£Àû²ÊÆ±Íø3d,²ÊƱ3d,×ßÊÆÍ¼,ר¼ÒÔ¤²â,Öйú¸£Àû²ÊƱ˫ɫÇò,¸£Àû²ÊƱ3d¿ª½±¹«¸æ/¿ª½±²éѯ/¿ª½±ÏÖ³¡Ö±²¥,Öйú¸£Àû²ÊƱ¹Ù·½ÍøÕ¾
·¢±íÆÀÂÛ
¿´²»Çå³þ£¬»»Ò»ÕÅ