linux socket ÓÅ»¯
linux socket ÓÅ»¯
2008-06-12 16:40
ʹÓà Sockets API£¬ÎÒÃÇ¿ÉÒÔ¿ª·¢¿Í»§»úºÍ·þÎñÆ÷Ó¦ÓóÌÐò£¬ËüÃÇ¿ÉÒÔÔÚ±¾µØÍøÂçÉϽøÐÐͨÐÅ£¬Ò²¿ÉÒÔͨ¹ý Internet ÔÚÈ«Çò·¶Î§ÄÚ½øÐÐͨÐÅ¡£ÓëÆäËû API Ò»Ñù£¬Äú¿ÉÒÔͨ¹ýһЩ·½·¨Ê¹Óà Sockets API£¬´Ó¶øÌá¸ß Socket µÄÐÔÄÜ£¬»òÕßÏÞÖÆ Socket µÄÐÔÄÜ¡£±¾ÎÄ̽Ë÷ÁË 4 ÖÖʹÓà Sockets API À´»ñȡӦÓóÌÐòµÄ×î´óÐÔÄܲ¢¶Ô GNU/Linux® »·¾³½øÐÐÓÅ»¯´Ó¶ø´ïµ½×îºÃ½á¹ûµÄ·½·¨¡£
ÔÚ¿ª·¢ socket Ó¦ÓóÌÐòʱ£¬Ê×ÒªÈÎÎñͨ³£ÊÇÈ·±£¿É¿¿ÐÔ²¢Âú×ãÒ»Ð©ÌØ¶¨µÄÐèÇó¡£ÀûÓñ¾ÎÄÖиø³öµÄ 4 ¸öÌáʾ£¬Äú¾Í¿ÉÒÔ´ÓÍ·¿ªÊ¼ÎªÊµÏÖ×î¼ÑÐÔÄÜÀ´Éè¼Æ²¢¿ª·¢ socket ³ÌÐò¡£±¾ÎÄÄÚÈݰüÀ¨¶ÔÓÚ Sockets API µÄʹÓá¢Á½¸ö¿ÉÒÔÌá¸ßÐÔÄÜµÄ socket Ñ¡ÏîÒÔ¼° GNU/Linux ÓÅ»¯¡£
ΪÁËÄܹ»¿ª·¢ÐÔÄÜ׿ԽµÄÓ¦ÓóÌÐò£¬Çë×ñÑÒÔϼ¼ÇÉ£º
×îС»¯±¨ÎÄ´«ÊäµÄÑÓʱ¡£
×îС»¯ÏµÍ³µ÷ÓõĸºÔØ¡£
Ϊ Bandwidth Delay Product µ÷½Ú TCP ´°¿Ú¡£
¶¯Ì¬ÓÅ»¯ GNU/Linux TCP/IP Õ»¡£
¼¼ÇÉ 1. ×îС»¯±¨ÎÄ´«ÊäµÄÑÓʱ
ÔÚͨ¹ý TCP socket ½øÐÐͨÐÅʱ£¬Êý¾Ý¶¼²ð·Ö³ÉÁËÊý¾Ý¿é£¬ÕâÑùËüÃǾͿÉÒÔ·â×°µ½¸ø¶¨Á¬½ÓµÄ TCP payload£¨Ö¸ TCP Êý¾Ý°üÖеÄÓÐЧ¸ººÉ£©ÖÐÁË¡£TCP payload µÄ´óСȡ¾öÓÚ¼¸¸öÒòËØ£¨ÀýÈç×î´ó±¨Îij¤¶ÈºÍ·¾¶£©£¬µ«ÊÇÕâЩÒòËØÔÚÁ¬½Ó·¢Æðʱ¶¼ÊÇÒÑÖªµÄ¡£ÎªÁË´ïµ½×îºÃµÄÐÔÄÜ£¬ÎÒÃǵÄÄ¿±êÊÇʹÓþ¡¿ÉÄܶàµÄ¿ÉÓÃÊý¾ÝÀ´Ìî³ä ÿ¸ö±¨ÎÄ¡£µ±Ã»ÓÐ×ã¹»µÄÊý¾ÝÀ´Ìî³ä payload ʱ£¨Ò²³ÆÎª×î´ó±¨ÎĶγ¤¶È£¨maximum segment size£© »ò MSS£©£¬TCP ¾Í»á²ÉÓà Nagle Ëã·¨×Ô¶¯½«Ò»Ð©Ð¡µÄ»º³åÇøÁ¬½Óµ½Ò»¸ö±¨ÎĶÎÖС£ÕâÑù¿ÉÒÔͨ¹ý×îС»¯Ëù·¢Ë͵ı¨ÎĵÄÊýÁ¿À´Ìá¸ßÓ¦ÓóÌÐòµÄЧÂÊ£¬²¢¼õÇáÕûÌåµÄÍøÂçÓµÈûÎÊÌâ¡£
¾¡¹Ü John Nagle µÄËã·¨¿ÉÒÔͨ¹ý½«ÕâЩÊý¾ÝÁ¬½Ó³É¸ü´óµÄ±¨ÎÄÀ´×îС»¯Ëù·¢Ë͵ı¨ÎĵÄÊýÁ¿£¬µ«ÊÇÓÐʱÄú¿ÉÄÜÏ£ÍûÖ»·¢ËÍһЩ½ÏСµÄ±¨ÎÄ¡£Ò»¸ö¼òµ¥µÄÀý×ÓÊÇ telnet ³ÌÐò£¬ËüÈÃÓû§¿ÉÒÔÓëÔ¶³Ìϵͳ½øÐн»»¥£¬Õâͨ³£¶¼ÊÇͨ¹ýÒ»¸ö shell À´½øÐеġ£Èç¹ûÓû§±»ÒªÇóÓ÷¢Ëͱ¨ÎÄ֮ǰÊäÈëµÄ×Ö·ûÀ´Ìî³äij¸ö±¨ÎĶΣ¬ÄÇôÕâÖÖ·½·¨¾Í¾ø¶Ô²»ÄÜÂú×ãÎÒÃǵÄÐèÒª¡£
ÁíÍâÒ»¸öÀý×ÓÊÇ HTTP ÐÒ顣ͨ³££¬¿Í»§»úä¯ÀÀÆ÷»á²úÉúÒ»¸öСÇëÇó£¨Ò»Ìõ HTTP ÇëÇóÏûÏ¢£©£¬È»ºó Web ·þÎñÆ÷¾Í»á·µ»ØÒ»¸ö¸ü´óµÄÏìÓ¦£¨Web Ò³Ãæ£©¡£
½â¾ö·½°¸
ÄúÓ¦¸Ã¿¼ÂǵĵÚÒ»¼þÊÂÇéÊÇ Nagle Ëã·¨Âú×ãÒ»ÖÖÐèÇó¡£ÓÉÓÚÕâÖÖËã·¨¶ÔÊý¾Ý½øÐкϲ¢£¬ÊÔͼ¹¹³ÉÒ»¸öÍêÕûµÄ TCP ±¨ÎĶΣ¬Òò´ËËü»áÒýÈëһЩÑÓʱ¡£µ«ÊÇÕâÖÖËã·¨¿ÉÒÔ×îС»¯ÔÚÏß·ÉÏ·¢Ë͵ı
Ïà¹ØÎĵµ£º
ÔÚLinuxÏÂдÁ˸öСµÄsocket³ÌÐò£¬·ÖΪ¿Í»§¶ËºÍ·þÎñÆ÷¶Ë£¬·þÎñ¶Ë¿ªÒ»¸ö¶Ë¿Ú(20000)£¬×öΪһ¸ödaemon£¬µÈ´ý¿Í»§µÄÁ¬½ÓÇëÇó¡£Ò»µ©Óпͻ§Á¬½Ó£¨¿Í»§¶ËµÄIPºÍ¶Ë¿ÚºÅÊDz»¹Ì¶¨µÄ£©£¬·þÎñÆ÷¶Ë´òÓ¡³ö¿Í»§¶ËµÄIPµØÖ·ºÍ¶Ë¿Ú£¬²¢ÇÒÏò¿Í»§¶Ë·¢ËÍ»¶ÓÐÅÏ¢ºÍʱ¼ä¡£
ÏÂÃæÊÇ ......
ÓÐʱsystem.mapÎļþ¿ÉÒÔ°ïÖúÎÒÃÇÀí½âÄں˱àÒ룬Ëü¼Ç¼ÁËËùÓдúÂëµÄÔËÐеØÖ·¡£
system.mapÄÚÈݸñʽΪ£ºÏßÐÔµØÖ· ÀàÐÍ ·ûºÅ
¾ßÌåÄÚÈÝÈçÏ£º
00100000 A phys_startup_32
c0100000 T startup_32
c0100000 A _text &nbs ......
¿âÓж¯Ì¬Ó뾲̬Á½ÖÖ£¬¶¯Ì¬Í¨³£ÓÃ.soΪºó׺£¬¾²Ì¬ÓÃ.aΪºó׺¡£ÀýÈ磺libhello.so libhello.a
1£¬Éú³É¿â
µÚÒ»²½Òª°ÑÔ´´úÂë±àÒï³ÉÄ¿±ê´úÂë¡£ÒÔÏÂÃæµÄ´úÂëΪÀý£¬Éú³ÉÉÏÃæÓõ½µÄhello¿â£º
/* hello.c * ......