ʲôÊÇÒ첽ͨѶ£¿
¾ÍÊÇͨѶÈÎÒâÒ»·½¿ÉÒÔÈÎÒâ·¢ËÍÏûÏ¢£¬ÓÐÏûÏ¢À´µ½Ê±»áÊÕµ½ÏµÍ³Ìáʾȥ½ÓÊÕÏûÏ¢¡£
ÕâÀïÒªÓõ½selectº¯Êý¡£Ê¹Óò½ÖèÈçÏ£º
1¡¢ÉèÖÃÒ»¸ö¼¯ºÏ±äÁ¿£¬ÓÃÀ´´æ·ÅËùÓÐÒªÅжϵľä±ú£¨file descriptors£º¼´ÎÒÃǽ¨Á¢µÄÿ¸ösocket¡¢ÓÃopen´ò¿ªµÄÿ¸öÎļþµÈ£©
2¡¢°ÑÐèÒªÅжϵľä±ú¼ÓÈëµ½¼¯ºÏÀï
3¡¢ÉèÖÃÅжÏʱ¼ä
4¡¢¿ªÊ¼µÈ´ý£¬¼´select
5¡¢Èç¹ûÔÚÉ趨µÄʱ¼äÄÚÓÐÈκξä±ú״̬±ä»¯Á˾ÍÂíÉÏ·µ»Ø£¬²¢°Ñ¾ä±úÉèÖõ½¼¯ºÏÀï
·þÎñÆ÷¶ËÔ´´úÂëÈçÏ£º
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/time.h>
#include <sys/types.h>
#define MAXBUF 1024
/************¹ØÓÚ±¾Îĵµ********************************************
*filename: async-server.c
*purpose: ÑÝÊ¾ÍøÂçÒ첽ͨѶ£¬ÕâÊÇ·þÎñÆ÷¶Ë³ÌÐò
*wrote by: zhoulifa(zhoulifa@163.com) ÖÜÁ¢·¢(http://zhoulifa.bokee.com)
Linux° ......
ѧϰ¹ý¡¶Èí¼þ¹¤³Ì¡·°É.Èí¼þ¹¤³Ì¿ÉÊÇÿһ¸ö³ÌÐòÔ±"±ØÐÞ"µÄ¿Î³Ì°¡.Èç¹ûÄãûÓÐѧϰ¹ý, ½¨ÒéÄãÈ¥¿´Ò»¿´. ÔÚÕâÒ»ÕÂÀïÃæ,ÎÒÃÇÒ»ÆðÀ´´ÓÈí¼þ¹¤³ÌµÄ½Ç¶ÈÑ§Ï°ÍøÂç±à³ÌµÄ˼Ïë.ÔÚÎÒÃÇд³ÌÐò֮ǰ, ÎÒÃǶ¼Ó¦¸Ã´ÓÈí¼þ¹¤³ÌµÄ½Ç¶È¹æ»®ºÃÎÒÃǵÄÈí¼þ,ÕâÑùÎÒÃÇ¿ª·¢Èí¼þµÄЧÂʲŻá¸ß. ÔÚÍøÂç³ÌÐòÀïÃæ,Ò»°ãµÄÀ´Ëµ¶¼ÊÇÐí¶à¿Í»§»ú¶ÔÓ¦Ò»¸ö·þÎñÆ÷.ΪÁË´¦Àí¿Í»§»úµÄÇëÇó, ¶Ô·þÎñ¶ËµÄ³ÌÐò¾ÍÌá³öÁËÌØÊâµÄÒªÇó.ÎÒÃÇѧϰһÏÂĿǰ×î³£ÓõķþÎñÆ÷Ä£ÐÍ.
Ñ»··þÎñÆ÷:Ñ»··þÎñÆ÷ÔÚͬһ¸öʱ¿ÌÖ»¿ÉÒÔÏìÓ¦Ò»¸ö¿Í»§¶ËµÄÇëÇó
²¢·¢·þÎñÆ÷:²¢·¢·þÎñÆ÷ÔÚͬһ¸öʱ¿Ì¿ÉÒÔÏìÓ¦¶à¸ö¿Í»§¶ËµÄÇëÇó
9.1 Ñ»··þÎñÆ÷:UDP·þÎñÆ÷
UDPÑ»··þÎñÆ÷µÄʵÏַdz£¼òµ¥:UDP·þÎñÆ÷ÿ´Î´ÓÌ×½Ó×ÖÉ϶Áȡһ¸ö¿Í»§¶ËµÄÇëÇó,´¦Àí, È»ºó½«½á¹û·µ»Ø¸ø¿Í»§»ú.
¿ÉÒÔÓÃÏÂÃæµÄËã·¨À´ÊµÏÖ.
socket(...);
bind(...);
while(1)
{
recvfrom(...);
process( ......
ÕýÔò±í´ïʽ Ö®Ôª×Ö·ûÀíÂÛÆª
1.Ôª×Ö·û
\ ÒýÓ÷û£¬ÓÃÓÚ¹ýÂ˵ôÔª×Ö·ûµÄÆ¥Å䣬½«Ëüµ±×÷Ò»¸öÆÕͨµÄ×Ö·ûÀ´½øÐÐÆ¥Å䣨°ü
À¨ÏÂÃæ½«³öÏÖµÄËùÓÐÔª×Ö·û£©
. Æ¥ÅäÈκε¥¸ö×Ö·û
? Æ¥Åä0»ò1¸öÔÚËüÇ°Ãæ£¬¼´"?"ºÅÇ°ÃæµÄ×Ö·û
* Æ¥Åä0»òÈÎÒâ¸öÔÚËüÇ°Ãæ£¬¼´"*"ºÅÇ°ÃæµÄ×Ö·û
+ Æ¥Åä0»òÈÎÒâ¶à¸öÔÚËüÇ°Ãæ£¬¼´"+"ºÅÇ°ÃæµÄ×Ö·û
.* ¶þ¸öÔª×Ö·û×éºÏÆðÀ´£¬´ËÑùʽ(pattern)Æ¥ÅäµÄÊÇÈÎÒâ×Ö·û
$ Æ¥ÅäÐнáÊø·û
^ Æ¥ÅäÐÐÆðʼ·û
^$ ÐÐʼ·ûÓëÐнáÊø·û×éÐÐÆðÀ´£¬´ËpatternÆ¥ÅäµÄÊÇ¿ÕÐÐ
\< Æ¥Åäµ¥´Ê(word)µÄ¿ªÊ¼
\> Æ¥Åäµ¥´Ê(word)µÄ½áÊø
[] Æ¥Åä³öÏÖÔÚÀ¨ºÅÖеÄÈÎÒâÒ»¸ö×Ö·û
[c1-c2] Æ¥Åä´Óc1µ½c2Çø¼äµÄÈÎÒâÒ»¸ö×Ö·û
[^c] Æ¥Åä³ýÁËcÍâµÄÈÎÒâÒ»¸ö×Ö·û£¬×¢ÒâÁË£¬ÕâÀï^Æðµ½"·Ç"µÄ×÷ÓÃ(ÆäËüÓïÑÔÖÐ
³£ÓÃ̾ºÅ!×÷Ϊȡ·ÇÔËËã·û),²»ÔÙÊÇÐÐÆðʼ·û
Àý [0-9a-zA-Z]Æ¥ÅäÈÎÒâÒ»¸ö°¢À²®Êý×Ö »òÊÇ Ò»¸öÓ¢ÎÄ´óСд×Öĸ
| ½«¶þ¸öÆ¥ÅäÌõ¼þpattern½øÐÐÂß¼"»ò"ÔËËã
\( \)&n ......
¿ª·¢ÕßÔÚÏß Builder.com.cn ¸üÐÂʱ¼ä:2008-05-23×÷Õߣºlupaworld¡¡ À´Ô´:
±¾ÎĹؼü´Ê£º ǶÈëʽ GUI ǶÈëʽLinux ǶÈëʽ¿ª·¢ ǶÈëʽϵͳ
¡¡¡¡³Â¹¤³Ìʦһֱ×öLinuxµÄǶÈëʽ¿ª·¢£¬×÷ΪÔÚ¿ª·¢Ò»ÏߵŤ³Ìʦ£¬Ëû¶ÔºÜ¶àÎÊÌâµÄ¿´·¨¿ÉÄܸüÇкÏʵ¼ÊÐèÇó£¬ÓÚÊÇ£¬Í¨¹ýÓʼþ£¬¾ÍǶÈëʽ¿ª·¢·½ÃæµÄÎÊÌ⣬ÇëËû̸ÁËÒ»ÏÂ×Ô¼ºµÄ¿´·¨£º
¡¡¡¡ÎÊ£º¹ØÓÚǶÈëʽ¿ª·¢£¬ÎÒÃÇ×¼±¸¸øÍ¬Ñ§Ãǽ²½âһЩÈëÃÅ֪ʶ£¬´ÓÄãÒ»Ïß¿ª·¢¾ÑéÀ´Ëµ£¬¸øÎÒÃÇһЩ½¨Ò飺
¡¡¡¡³Â¹¤»Ø´ð£º
¡¡¡¡¶ÔÓÚǶÈëʽLinuxÈëÃÅ£¬Èç¹ûÓÐÒ»¶¨»ù´¡£¬¿ÉÒÔ´ÓÇý¶¯¿ªÊ¼£»Èç¹ûûÓлù´¡£¬ÎÒ¸öÈ˽¨Ò黹ÊÇ´ÓÓ¦ÓóÌÐò¿ªÊ¼¡£ÒòΪ´ÓÓ¦ÓóÌÐò¿ªÊ¼ÊÇ×îÈÝÒ׵ģ¬Ò²ÊÇ×îÖ±¹ÛµÄ¡£¶øÇý¶¯³ÌÐòÔËÐÐÔÚÄÚºË̬£¬Çý¶¯±¾ÉíµÄ½á¹¹¾Í±È½Ï¸´ÔÓ£¬Èç¹ûÒª³¹µ×ŪÃ÷°×Çý¶¯µÄÔËÐлúÖÆ£¬±Ø¶¨Ç£ÉæÄںˣ¬¶ÔÓÚ¸ßÄê¼¶µÄѧÉú¿ÖÅÂÎÊÌâ»áÉÙһЩ£¬¶ø ¶ÔÓÚµÍÄê¼¶µÄѧÉú£¬ÎÊÌâ¹À¼Æ½Ï¶à¡£ÎÒÔø¾Óöµ½¹ýһЩ³õѧÕߣ¬¾ÍÊÇÒ»ÈëÞÍÔÔÁË£¬Ê§È¥ÁËÐÅÐÄ£¬µ±È»ÕâÖ»ÊÇÉÙÊý¡£²»¹ý£¬Èç¹ûÔÚÓöµ½ÎÊÌâÖ®ºó£¬Äܹ»µÃµ½¼´Ê±¡¢ ÕýÈ·µÄµã»¯£¬ÄǾÍÊǺÃÊÂÁË¡£
¡¡¡¡¼ÈÈ»Äú¾ö¶¨½²Çý¶¯£¬ÄǾʹÓÄÚºËÄ£¿é¿ªÊ¼¡£ÔÚPCÉϾͿÉÒÔ½øÐеÄÐéÄâÉ豸ʵÑ飬Èç»ùÓÚÄÚ´æµÄÄÚºËÄ£¿é¡£¿ÉÒÔ¿¼ÂÇ´ÓÄ£¿éµÄ½á¹¹¡¢±àÒë¡¢²åÈë¡¢Ð¶ÔØµÈ·½ Ãæ ......
ǶÈëʽLinux²Ù×÷ϵͳѧϰ¹æ»®
ARM+LINUX·Ïߣ¬Ö÷¹¥Ç¶ÈëʽLinux²Ù×÷ϵͳ¼°ÆäÉÏÓ¦ÓÃÈí¼þ¿ª·¢Ä¿±ê£º
£¨1£© ÕÆÎÕÖ÷Á÷ǶÈëʽ΢´¦ÀíÆ÷µÄ½á¹¹ÓëÔÀí£¨³õ²½¶¨Îªarm9£©
£¨2£© ±ØÐëÕÆÎÕÒ»¸öǶÈëʽ²Ù×÷ϵͳ £¨³õ²½¶¨Îªuclinux»òlinux,°æ±¾´ý¶¨£©
£¨3£© ±ØÐëÊìϤǶÈëʽÈí¼þ¿ª·¢Á÷³Ì²¢ÖÁÉÙ×öÒ»¸öǶÈëʽÈí¼þÏîÄ¿¡£
´ÓÊÂǶÈëʽÈí¼þ¿ª·¢µÄºÃ´¦ÊÇ£º
£¨1£©Ä¿Ç°¹úÄÚÍâÕâ·½ÃæµÄÈ˶¼ºÜϡȱ¡£ÕâÒ»ÁìÓòÈëÃÅÃż÷½Ï¸ß£¬ËùÒÔ·ÇרҵITÈËÔ±ºÜÄÑÇÐÈëÕâÒ»ÁìÓò£»ÁíÒ»·½Ã棬ÊÇÒòΪÕâÒ»ÁìÓò½ÏУ¬Ä¿Ç°·¢Õ¹Ì«¿ì£¬´ó¶àÊýÈËÎÞÌõ¼þ½Ó´¥¡£
£¨2£©ÓëÆóÒµ¼ÆËãµÈÓ¦ÓÃÈí¼þ²»Í¬£¬Ç¶ÈëʽÁìÓòÈ˲ŵŤ×÷Ç¿¶Èͨ³£µÍһЩ£¨µ«ÊÕÈë²»µÍ£©¡£
£¨3£©ÄÄÌìÈôÏë´´Òµ£¬¸ã×ÔÒѵIJúÆ·£¬Ç¶Èëʽ²»ÏñÓ¦ÓÃÈí¼þÄÇÑùÈÝÒ×±»µÁ°æ¡£Ó²¼þÉè¼ÆÒ»°ã¶¼ÊÇÇëÆäËü¹«Ë¾¸ø¶©×ö£¨Õâ½Ð“ÌùÅÆ”£ºOEM£©£¬¶¼ÊÇͨÓõÄÓ²¼þ£¬ÎÒÃÇÖ»¹ÜÉè¼ÆÈí¼þ¾Í±ä³É×Ô¼ºµÄ²úÆ·ÁË¡£
£¨4£©ÐËȤËùÔÚ£¬ÕâÊÇ×îÖ÷ÒªµÄ¡£
´ÓÊÂǶÈëʽÈí¼þ¿ª·¢µÄȱµãÊÇ£º
£¨1£©ÈëÃÅÆðµã½Ï¸ß£¬ËùÓõ½µÄ¼¼ÊõÍùÍù¶¼ÓÐÒ»¶¨ÄѶȣ¬ÈôÈíÓ²¼þ»ù´¡²»ºÃ£¬ÌرðÊDzÙ×÷ϵͳ¼¶Èí¼þ¹¦µ×²»ÉÔò¿ÉÄܲ»ÊÊÓÚ´ËÐС£  ......
¸öµäÐ͵Ä×ÀÃæLinuxϵͳ°üÀ¨3¸öÖ÷ÒªµÄÈí¼þ²ã---linuxÄںˡ¢C¿âºÍÓ¦ÓóÌÐò´úÂë¡£
¡¡¡¡ÄÚºËÊÇΨһ¿ÉÒÔÍêÈ«¿ØÖÆÓ²¼þµÄ²ã£¬ÄÚºËÇý¶¯³ÌÐò´ú±íÓ¦ÓóÌÐòÓëÓ²¼þÖ®¼ä½øÐлỰ¡£ÄÚºËÖ®ÉÏÊÇC¿â£¬¸ºÔð°ÑPOSIX APIת»»ÎªÄں˿ÉÒÔʶ±ðµÄÐÎʽ£¬È»ºóµ÷ÓÃÄںˣ¬´ÓÓ¦ÓóÌÐòÏòÄں˴«µÝ²ÎÊý¡£Ó¦ÓóÌÐòÒÀ¿¿Çý¶¯ÄÚºËÀ´Íê³ÉÌØ¶¨µÄÈÎÎñ¡£
¡¡¡¡ÔÚÉè¼ÆÇ¶ÈëʽӦÓõÄʱºò£¬¿ÉÒÔ²»°´ÕÕÕâÖÖ²ã´Î£¬Ó¦ÓóÌÐòÔ½¹ýC¿âÖ±½ÓºÍÄں˻Ự£¬»òÕß°ÑÓ¦ÓúÍÄÚºËÀ¦°óÔÚÒ»Æð£¬ÉõÖÁ¿ÉÒÔ°ÑÓ¦ÓÃдΪÄں˵ÄÒ»¸öỊ̈߳¬ÔÚÄÚºËÖÐÔËÐУ¬ËäÈ»ÕâÑùÔÚÒÆÖ²ÉÏ´øÀ´ÁËÀ§ÄÑ£¬µ«¿¼ÂÇǶÈëʽϵͳ¶Ô³ß´çÒªÇóСµÄÌØµã£¬ÊÇÍêÈ«¿ÉÐеġ£²»¹ýÎÒÃÇʹÓÃÈý²ãÈí¼þ½á¹¹µÄģʽÀ´Ñ§Ï°Ç¶Èëʽlinux½«»áÊÇÎÒÃÇÈÏʶ¸üÇåÎú£¬¼òµ¥¿ÉÐв¢Ê¹Ó¦ÓþßÓе¯ÐÔ¡£
¡¡¡¡¿ìËÙÈëÃÅ
¡¡¡¡×î¼òµ¥µÄ½¨Á¢Ç¶ÈëʽLinuxÓ¦Óõķ½·¨¾ÍÊÇ´ÓÎÒÃÇʹÓõÄ×ÀÃæLinuxÈëÊÖ£¬°²×°Ò»¸öϲ°®µÄ°æ±¾£¬°ÑÎÒÃǵÄij¸öÓ¦ÓÃ×÷Ϊ³õʼ»¯µÄÒ»²¿·Ö£¬¿ò¼Ü¾ÍËãÍê³ÉÁË¡£
¡¡¡¡µ±È»£¬Ç¶ÈëʽlinuxÓ¦ÓÃÔ¶±ÈÎÒÃǵÄ×ÀÃæ°æ±¾¹¦Äܼòµ¥×¨Ò»£¬ËüÒ²Ðí¾ÍÊÇÒ»¸öÓÃÓÚ×ã²ÊµÄÖÕ¶Ë»ú£¬»òÊÇÒ»¸öÊýÂëÒôƵ²¥·ÅÆ÷£¬ÕâЩϵͳ³ýÁËʹÓÃǶÈëʽCPUÍ⣬½ö½öÔÙÐèÒªÒ»¸ö´®¿Ú£¬Íø¿ÚµÈÉÙÁ¿µÄÊäÈëÊä³ö½Ó¿Ú¾Í¿ÉÒÔÍê³ÉËüÃÇÌØ¶¨µÄÓ¦ÓÃÁË¡£
¡¡¡ ......