Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

LinuxÉÏTCP¶ªÊ§Ð¡°ü²»¿É¼ûµÄ½â¾ö

LinuxÉÏTCP¶ªÊ§Ð¡°ü²»¿É¼ûµÄ½â¾ö
 ×÷ÕߣºÇ§Àï¹ÂÐÐ(http://blog.csdn.net/yanghehong)
ÓÐÍøÓÑÔÚ×öÒ»¸öLinuxÉϵĿͻ§¶ËÅöµ½ÕâÑùµÄÎÊÌ⣺
ÎÒÃÇÔÚLinuxÏ¿ª·¢Ò»¸öÍøÂç¿Í»§¶Ë³ÌÐò£¨·þÎñÆ÷ÊDz»¿ÉÐ޸ĵģ©£¬²»¶ÏÏò·þÎñÆ÷²»¶¨ÆÚ·¢ËÍһЩºÜСµÄ°ü£¨Ò»°ãÖ»Óм¸Ê®×Ö½Ú£©£¬ÏÖÔÚ³öÏÖÕâÖÖÇé¿ö£º´ó²¿·Ö°üÕý³£·¢ËÍ£¬µ«Êǵ±ÎÞÏßModem¶Ï¿ªµÄʱºò£¬Èç¹ûÕâ¸öʱºò¸ÕºÃÓÐÒ»¸öС°ü£¬¾Í¿ÉÄܶªÊ§£¬µ«ÔÚ³ÌÐòÖÐÈ´ÏÔʾÒѾ­·¢Ëͳɹ¦£¬µ¼Ö¶ª°ü¡£
ÎÒÃÇ·ÖÎöÔ­ÒòÊÇÕâÑù£º
1£ºÖ÷³ÌÐò´´½¨Socket£¬TCP/IP·½Ê½£¬²¢²ÉÓÃStream·½Ê½
2£ºÖ÷³ÌÐòµ÷ÓÃWrite£¬Ð´ÈëС°üµ½ÏµÍ³µÄSocket»º³åÇø£¬²¢·µ»Ø³É¹¦Ð´È룬ÓÉÓÚ×Ö½ÚÊýºÜС£¬ËùÒÔÒ»°ã¶¼Á¢¼´·µ»ØдÈë³É¹¦£¡
3£ºLinux TCP/IPЭÒéÕ»°ÑSocket»º³åÇøÊý¾Ý·¢Ë͵½·þÎñÆ÷
Èç¹ûµÚ¶þ²½Íê³É£¬¸ÕºÃÔÚµÚÈý²½³öÏÖÎÞÏßModem¶Ï¿ªµÄÇé¿ö£¬¾Í»áµ¼ÖÂÖ÷³ÌÐòÒÔΪÒѾ­·¢Ëͳɹ¦ÁË£¬µ«·þÎñÆ÷ÊÕ²»µ½µÄÇé¿ö¡£
ÎÒÃÇÔÚÍøÂçÉÏËÑË÷ÁË´óÁ¿µÄ×ÊÁÏ£¬µ«ÊÇûÓÐÕÒµ½×îÖյĽâ¾ö·½°¸£¬Ò»°ã¶¼ÊÇÒªÇóÐÞ¸ÄЭÒ飬¼ÓÉ϶ÔС°üµÄACK´¦Àí£¬µ«ÎÒÃÇÕâ±ßÎÞ·¨¿ØÖÆ·þÎñÆ÷¡£
ÎÒÃÇÒ²ÊÔ×Å¿ØÖÆKeepAliveºÍNoDelay£¬µ«»¹ÊÇûЧ¹û£º
//¶Ôsock_cliÉèÖÃKEEPALIVEºÍNODELAY
len = sizeof(unsigned int);
setsockopt(sock_cli, SOL_SOCKET, SO_KEEPALIVE, &optval, len);//ʹÓÃKEEPALIVE
setsockopt(sock_cli, IPPROTO_TCP, TCP_NODELAY, &optval, len);//½ûÓÃNAGLEËã·¨
ÇëÎÊÓÐʲô·½Ê½¿ÉÒÔ½â¾öÕâÖÖÇé¿ö£¿
Èç¹ûÊÇWindowsµÄ£¬¿ÉÒÔ°ÑÄں˵ķ¢ËÍbufferÉèΪ0£¬Ò²¾ÍÊÇsocketµÄSO_SNDBUFÑ¡Ïî¡£ÄÇôֱµ½·þÎñÆ÷TCPÊÕµ½Êý¾Ý²¢ackÁË£¬¿Í»§¶ËµÄдÈë²Å·µ»Ø³É¹¦¡£
²»¹ýÕâÖÖÉèSO_SNDBUFµÄ·½·¨ÔÚLinuxÉÏÊÇÐв»Í¨µÄ¡£Linux²»Èðѷ¢ËÍbufferÉèΪ0¡£
LinuxÄÚºËÖеĴúÂëÊÇÕâÑùµÄ£º
Socket.c
 int sock_setsockopt(struct socket *sock, int level, int optname,
char __user *optval, int optlen)
{
case SO_SNDBUF:
/* Don't error on this BSD doesn't and if you think
about it this is right. Otherwise apps have to
play 'guess the biggest size' games. RCVBUF/SNDBUF
are treated in BSD as hints */
if (val > sysctl_wmem_max)
val = sysctl_wmem_max;
set_sndbuf:
sk->sk_userlocks |= SOCK_SNDBUF_LOCK;
if ((val * 2) < SOCK_MIN_SNDBUF)
sk->sk_sndbuf = SOCK_MIN_SNDBUF;
else
sk->sk_sndbuf = val


Ïà¹ØÎĵµ£º

LINUX ¾²Ì¬¿âºÍ¶¯Ì¬¿â


       ¿âÓж¯Ì¬Ó뾲̬Á½ÖÖ£¬¶¯Ì¬Í¨³£ÓÃ.soΪºó׺£¬¾²Ì¬ÓÃ.aΪºó׺¡£ÀýÈ磺libhello.so libhello.a
1£¬Éú³É¿â
      µÚÒ»²½Òª°ÑÔ´´úÂë±àÒï³ÉÄ¿±ê´úÂë¡£ÒÔÏÂÃæµÄ´úÂëΪÀý£¬Éú³ÉÉÏÃæÓõ½µÄhello¿â£º
        /* hello.c * ......

Linux ÃüÁî ¡°ls ¡± µÄÓ÷¨

¡¡ls ÃüÁî¿ÉÒÔ˵ÊÇlinuxÏÂ×î³£ÓõÄÃüÁîÖ®Ò»¡£ËüÓÐÖÚ¶àµÄÑ¡ÏÆäÖÐÓкܶàÊǺÜÓÐÓõģ¬ÄãÊÇ·ñÊìϤÄØ£¿ÏÂÃæÁгöÁË ls ÃüÁîµÄ¾ø´ó¶àÊýÑ¡Ïî¡£
¡¡¡¡-a ÁгöĿ¼ÏµÄËùÓÐÎļþ£¬°üÀ¨ÒÔ . ¿ªÍ·µÄÒþº¬Îļþ¡£
¡¡¡¡-b °ÑÎļþÃûÖв»¿ÉÊä³öµÄ×Ö·ûÓ÷´Ð±¸Ü¼Ó×Ö·û±àºÅ(¾ÍÏóÔÚCÓïÑÔÀïÒ»Ñù)µÄÐÎʽÁгö¡£
¡¡¡¡-c Êä³öÎļþµÄ i ½ÚµãµÄÐÞ¸Äʱ ......

LinuxϵĶàÏ̱߳à³Ì

1 ÒýÑÔ
¡¡¡¡Ị̈߳¨thread£©¼¼ÊõÔçÔÚ60Äê´ú¾Í±»Ìá³ö£¬µ«ÕæÕýÓ¦ÓöàÏ̵߳½²Ù×÷ϵͳÖÐÈ¥£¬ÊÇÔÚ80Äê´úÖÐÆÚ£¬solarisÊÇÕâ·½ÃæµÄٮٮÕß¡£´«Í³µÄUnixÒ²Ö§³ÖÏ̵߳ĸÅÄµ«ÊÇÔÚÒ»¸ö½ø³Ì£¨process£©ÖÐÖ»ÔÊÐíÓÐÒ»¸öỊ̈߳¬ÕâÑù¶àÏ߳̾ÍÒâζ×Ŷà½ø³Ì¡£ÏÖÔÚ£¬¶àÏ̼߳¼ÊõÒѾ­±»Ðí¶à²Ù×÷ϵͳËùÖ§³Ö£¬°üÀ¨Windows/NT£¬µ±È»£¬Ò²°üÀ¨Linux¡£ ......

linux gcc ±àÒëʱͷÎļþºÍ¿âÎļþËÑË÷·¾¶

Ò»¡¢Í·Îļþ
 
gcc ÔÚ±àÒëʱѰÕÒËùÐèÒªµÄÍ·Îļþ £º
 
¡ùËÑÑ°»á´Ó-I¿ªÊ¼
 
¡ùÈ»ºóÕÒgccµÄ»·¾³±äÁ¿ C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
 
¡ùÔÙÕÒÄÚ¶¨Ä¿Â¼
/usr/include 
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-l ......

2010 3 16ÈÕ×ܽᣨlinuxµÄ½ø³Ì¹ÜÀí1£©

Ö÷Òª¿´ÁËLinuxÍêȫעÊÍÄDZ¾Ê飬ÖÕÓÚ×¼±¸¹¥¶ÁLinuxÄÚºËÔ´ÂëÁË£¬ÏÈ¿´Á˵ڶþÕŵÄ×ÜÌå¸ÅÄ¸Ð¾õ²Ù×÷ϵͳÓкܶණÎ÷»¹ÕæÊÇ´óͬСÒ죬¼ÇµÃucos¾ÍÊÇÓÐÒ»¸ö½Ð×ö¿ì±íµÄ¶«Î÷£¬ÀïÃæ×î¶à¿ÉÒÔ±íʾ64¸ö½ø³Ì£¬¶øÔç°æµÄLinux£¨0.11£©Ò²ÓÐÕâ¸öһ˵µÄ¶«Î÷¡£
 
ÔÚLinuxÖÐÒ²ÓÐÒ»¸öPCBÀ´±íʾÿ¸ö½ø³Ì£¬ÔÚÕâ¸ö½á¹¹ÌåÖУ¬ÓÐÖ¸ÏòÈÎÎñ´úÂëµÄÖ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ