linuxÏÂsocketͨÐÅ֮ͨÐÅÄ£ÐÍ
µ¼¶Á£º
¡¡¡¡1£®Socket¼ò½é
¡¡¡¡SocketÊÇTCP/IPÍøÂçµÄAPI£¬¿ÉÒÔÓÃËüÀ´¿ª·¢ÍøÂçÓ¦ÓóÌÐò£¬SocketÊý¾Ý´«ÊäÊÇÒ»ÖÖÌØÊâµÄI/O£¬SocketÒ²ÊÇÒ»ÖÖÎļþÃèÊö·û
¡¡¡¡2£®SocketµÄ½¨Á¢
¡¡¡¡int socket(int domain£¬ int type£¬ int protocol)
¡¡¡¡º¯Êý·µ»Ø£ºÒ»¸öÕûÐ͵ÄSocketÃèÊö·û£¬¿ÉÒÔÔÚºóÃæµ÷ÓÃËü¡£
¡¡¡¡²ÎÊý˵Ã÷£º
¡¡¡¡int domain£ºÖ¸Ã÷ËùʹÓõÄÐÒé×壬 ͨ³£ÊÇPF_INET£¬ ±íÊ¾ÍøÂç(TCP/IP)ÐÒé×å˵Ã÷ÎÒÃÇÍøÂç³ÌÐòËùÔÚµÄÖ÷»ú²ÉÓõÄͨѶÐ×å(AF_UNIXºÍAF_INETµÈ).
¡¡¡¡AF_UNIX£ºÖ»Äܹ»ÓÃÓÚµ¥Ò»µÄUnixϵͳ½ø³Ì¼äͨÐÅ£¬
¡¡¡¡AF_INET£ºÊÇÕë¶ÔInternetµÄ£¬Òò¶ø¿ÉÒÔÔÊÐíÔÚÔ¶³ÌÖ÷»úÖ®¼äͨÐÅ£¨µ±ÎÒÃÇman socketʱ·¢ÏÖdomain¿ÉÑ¡ÏîÊÇ PF_*¶ø²»ÊÇAF_*£¬ÒòΪglibcÊÇposixµÄʵÏÖËùÒÔÓÃPF´úÌæÁËAF£¬²»¹ýÎÒÃǶ¼¿ÉÒÔʹÓõģ©
¡¡¡¡int type£ºÖ¸¶¨socketµÄÀàÐÍ£¬ ͨ³£ÊÇ SOCK_STREAM Á÷ʽSocketÕâÑù»áÌṩ°´Ë³ÐòµÄ£¬¿É¿¿£¬Ë«Ïò£¬ÃæÏòÁ¬½ÓµÄ±ÈÌØÁ÷ºÍSOCK_DGRAMÊý¾Ý±¨Ê½SocketÕâÑùÖ»»áÌṩ¶¨³¤µÄ£¬²»¿É¿¿£¬ÎÞÁ¬½ÓµÄͨÐÅ
¡¡¡¡int prottocol£ºÍ¨³£Îª0 ÓÉÓÚÎÒÃÇÖ¸¶¨ÁËtype£¬ËùÒÔÕâ¸öµØ·½ÎÒÃÇÒ»°ãÖ»ÒªÓÃ0À´´úÌæ¾Í¿ÉÒÔÁË
¡¡¡¡Ó¦ÓÃʾÀý£ºint sockfd = socket(PF_INET£¬ SOCK_STREAM£¬ 0);
¡¡¡¡
¡¡¡¡3£®SocketÅäÖÃ
¡¡¡¡SocketÃèÊö·ûÊÇÒ»¸öÖ¸ÏòÄÚ²¿Êý¾Ý½á¹¹µÄÖ¸Õ룬ËüÖ¸ÏòÃèÊö·û±íÈë¿Ú¡£µ÷ÓÃSocketº¯Êýʱ£¬socketÖ´ÐÐÌ彫½¨Á¢Ò»¸öSocket£¬Êµ¼ÊÉÏ"½¨Á¢Ò»¸öSocket"Òâζ×ÅΪһ¸öSocketÊý¾Ý½á¹¹·ÖÅä´æ´¢¿Õ¼ä¡£SocketÖ´ÐÐÌåΪÄã¹ÜÀíÃèÊö·û±í¡£
¡¡¡¡Á½¸öÍøÂç³ÌÐòÖ®¼äµÄÒ»¸öÍøÂçÁ¬½Ó°üÀ¨ÎåÖÖÐÅÏ¢£ºÍ¨ÐÅÐÒé¡¢±¾µØÐÒ鵨ַ¡¢±¾µØÖ÷»ú¶Ë¿Ú¡¢Ô¶¶ËÖ÷»úµØÖ·ºÍÔ¶¶ËÐÒé¶Ë¿Ú¡£SocketÊý¾Ý½á¹¹Öаüº¬ÕâÎåÖÖÐÅÏ¢¡£
¡¡¡¡Í¨¹ýsocketµ÷Ó÷µ»ØÒ»¸ösocketÃèÊö·ûºó£¬ÔÚʹÓÃsocket½øÐÐÍøÂç´«ÊäÒÔǰ£¬±ØÐëÅäÖøÃsocket£º
¡¡¡¡1) ÃæÏòÁ¬½ÓµÄsocket¿Í»§¶Ëͨ¹ýµ÷ÓÃConnectº¯ÊýÔÚsocketÊý¾Ý½á¹¹Öб£´æ±¾µØºÍÔ¶¶ËÐÅÏ¢¡£
¡¡¡¡2) ÎÞÁ¬½ÓsocketµÄ¿Í»§¶ËºÍ·þÎñ¶ËÒÔ¼°ÃæÏòÁ¬½ÓsocketµÄ·þÎñ¶Ëͨ¹ýµ÷ÓÃbindº¯ÊýÀ´ÅäÖñ¾µØÐÅÏ¢¡£
¡¡¡¡
¡¡¡¡4£®Bind£¨£©
¡¡¡¡Bindº¯Êý½«socketÓë±¾»úÉϵÄÒ»¸ö¶Ë¿ÚÏà¹ØÁª£¬ËæºóÄã¾Í¿ÉÒÔÔڸö˿ڼàÌý·þÎñÇëÇó¡£
¡¡¡¡º¯ÊýÔÐÍ£ºint bind(int sockfd£¬ struct sockaddr *my_addr£¬ int addrlen);
¡¡¡¡º¯Êý·µ»Ø£º³É¹¦±»µ÷ÓÃʱ·µ»Ø0£»³öÏÖ´íÎóʱ·µ»Ø"-1"²¢½«errnoÖÃΪÏàÓ¦µÄ´íÎóºÅ¡£
¡¡¡¡²ÎÊý˵Ã÷£º
¡¡¡¡Sockfd£ºÊǵ÷ÓÃsocketº¯Êý·µ»ØµÄsocketÃèÊö·û£¬
Ïà¹ØÎĵµ£º
linuxÉ豸Çý¶¯µÄѧϰÊÇÒ»ÏîºÆ´óµÄ¹¤³Ì,¶ÁÕßÐèÒªÊ×ÏÈÕÆÎÕÒÔÏ»ù´¡:
1.Á¼ºÃµÄÓ²¼þ»ù´¡,¶®µÃSRAM,FLASH,SDRAM,Ó²Å̵ĶÁд·½Ê½,UART,I2C,USBµÈÉ豸½Ó ¿Ú,ÂÖѯ,ÖжÏ,DMAµÄÔÀí,PCI×ÜÏߵŤ×÷·½Ê½ÒÔ¼°CPUµÄÄÚ´æ¹ÜÀíµ¥Ôª(MMU)µÈ.
2.Á¼ºÃµÄCÓïÑÔ»ù´¡,ÄÜÁé»îµØÔ ......
LinuxϵĶàÏ̱߳à³Ì
1 ÒýÑÔ
¡¡¡¡Ị̈߳¨thread£©¼¼ÊõÔçÔÚ60Äê´ú¾Í±»Ìá³ö£¬µ«ÕæÕýÓ¦ÓöàÏ̵߳½²Ù×÷ϵͳÖÐÈ¥£¬ÊÇÔÚ80Äê´úÖÐÆÚ£¬solarisÊÇÕâ·½ÃæµÄٮٮÕß¡£´«Í³µÄUnixÒ²Ö§³ÖÏ̵߳ĸÅÄµ«ÊÇÔÚÒ»¸ö½ø³Ì£¨process£©ÖÐÖ»ÔÊÐíÓÐÒ»¸öỊ̈߳¬ÕâÑù¶àÏ߳̾ÍÒâζ×Å¶à½ø³Ì¡£ÏÖÔÚ£¬¶àÏ̼߳¼ÊõÒѾ±»Ðí¶à²Ù×÷ϵͳËùÖ§³Ö£¬°üÀ¨Windows/NT£ ......
Ãæ¶Ô²»¶ÏÉý¼¶µÄÄںˣ¬ÈçºÎѧϰlinuxÉ豸Çý¶¯
  ......
Éè¼ÆÒ»¸ölinuxϵÄdeamon½ø³Ì£¬¹Ø¼üÖ»Óм¸¸ö£º
1.forkÁ½´Î¡£
2.forkµÚÒ»´ÎºÍµÚ¶þ´ÎÖ®¼ä³ÉΪ½ø³Ì×éÍ·¡£
3.¸Ä±ä¹¤×÷Ŀ¼¡£
4.ºöÂÔÐźš£
5.ÉèÖöÁдÑÚÂë¡£
Ò»ÏÂÊÇÒ»¸ö´ÓÍøÂçËѼ¯µ½µÄÀý³Ì£¬·Ç³£ºÃµÄÑÝʾÁËÉÏÊöÒªµã£¬´æ´Ë±¸Íü¡£
#include
#include
#include
#include
void main(int argc, char ** argv)
{
tim ......