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

¡¾×ª¡¿linux socket()µ÷ÓÃÓëarp±¨ÎÄ·¢ËÍ

 LinuxÌṩ×î³£ÓõÄÍøÂçͨÐÅÓ¦ÓóÌÐò¿ª·¢½Ó¿Ú--BerkerleyÌ×½Ó×Ö(Socket)£®Ëü¼ÈÊÊÓÃÓÚͬһÖ÷»úÉϽø³Ì¼äͨÐÅ(IPC)£¬ÓÖÊÊÓÃÓÚ²»Í¬Ö÷»úÉϵĽø³Ì¼äͨÐÅ¡£Ì×½Ó×ÖµÄÉèÖÃͨ¹ýsocketµ÷ÓÃÍê³É£º
int socket(int family,int type,int protocol);
ÆäÖÐfamilyָͨÐÅÓò»òЭÒé×壬Linuxϵͳ֧³ÖµÄÍøÂçЭÒé×åÓÐPF_UNIX£¬PF_IPX£¬PF_PACKETµÈ¼¸Ê®ÖÖ£»typeΪÌ×½Ó×ÖÀàÐÍ,Ä¿Ç°ÓÐSOCK_STREAM¡¢SOCK_DGRAM¡¢SOCK_RAW¡¢SOCK_PACKETµÈ£»protocolÊÇÌ×½Ó×ÖËùÓõÄÌض¨Ð­ÒéÀàÐͺţ®
LinuxϵͳÌṩµÄ»ùÓÚÊý¾ÝÁ´Â·²ã¿ª·¢Ó¦ÓóÌÐòµÄ½Ó¿Ú¼¯³ÉÔÚÌ×½Ó×ÖÖУ¬ËüÊÇͨ¹ý´´½¨packetÀàÐ͵ÄÌ×½ÓÓʹӦÓóÌÐò¿ÉÖ±½ÓÔÚÊý¾ÝÁ´Â·²ã½ÓÊÕ»ò·¢ËÍδ±»ÏµÍ³´¦ÀíµÄԭʼµÄÊý¾Ý±¨ÎÄ(ÈçARP±¨ÎÄ)£¬Óû§Ò²¿ÉÒÔʹÓÃpacketÀàÐ͵ÄÌ×½ÓÓîÔÚÎïÀí²ãÉ϶¨Òå×Ô¼ºÌØÊâµÄÍøÂçЭÒé¡£Ö»ÓÐ×¢²áºÅΪ0µÄÓû§(³¬¼¶Óû§)½ø³Ì²ÅÄܽ¨Á¢»ò´ò¿ªÓÃÓÚ·ÃÎÊÍøÂçµÍ²ãµÄÌ×½Ó×Ö£®ÔÚLinuxϵͳÖУ¬ÓÃÒÔÏÂÈýÖÖ·½Ê½´´½¨µÄpacketÌ×½Ó×Ö¿ÉÖ±½ÓÓÃÓÚ·ÃÎÊÊý¾ÝÁ´Â·²ã£º
(1)PF_INETЭÒé×åÖÐSOCK_PACKEIÀàÐ͵ÄÌ×½Ó×Ö
(2)PF_PACKETЭÒé×åÖÐSOCK_RAWÀàÐ͵ÄÌ×½Ó×Ö
(3)PF_PACKETЭÒé×åÖÐSOCK_DGRAMÀàÐ͵ÄÌ×½Ó×Ö
Linux 2£®0ÖжÔÊý¾ÝÁ´Â·²ãµÄ²Ù×÷Ö÷ҪʹÓÃSOCK_PACKET¶¨ÒåµÄpacketÌ×½Ó×Ö£®³õʼ»¯¶¨ÒåÈçÏ£º
sockfd=socket(AF_INET,SOCK_PACKET,protocol)£»
ÆäÖУ¬protocolÓÃÓÚ¾ö¶¨Ì×½Ó×ÖËùʹÓõÄÎïÀí²ãЭÒé(ÔÚIEEE802.3Öж¨Òå)£®±ÊÕßÔÚ´ËÑ¡Ôñ³£ÓõÄÎïÀí²ãЭÒéETH_P_IP(InternetЭÒé)£®SOCK_PACKETʹÓÃÒ»ÖֱȽÏÀϵÄsockaddr_pktÊý¾Ý½á¹¹À´ÉèÖÃÍøÂç½Ó¿Ú¡£
ÔÚLinux 2 2ÖÐʹÓÃPF_PACKET´úÌæSOCK_PACKETÀ´¶¨ÒåpacketÌ×½Ó×Ö£®ÕâÖÖÌ×½Ó×ֵijõʼ»¯¶¨ÒåÈçÏ£º
sockfd=socket(PF_PACKET,socket_type,protocol)£»
ÆäÖÐsocket_typeÖ»ÄÜΪSOCK_RAW»òSOCK_DGRAM,protocolΪÎïÀí²ãͨÐÅЭÒé(ͬÉÏ)¡£SOCK_RAWºÍSOCK_DGRAMÀàÐÍÌ×½Ó×ÖʹÓÃÒ»ÖÖÓëÉ豸Î޹صıê×¼ÎïÀí²ãµØÖ·½á¹¹sockaddr_ll£¬µ«¾ßÌå²Ù×÷µÄ±¨Îĸñʽ²»Í¬¡£SOCK_RAWÌ×½Ó×ÖÖ±½ÓÏòÍøÂçÓ²¼þÇý¶¯³ÌÐò·¢ËÍ(»ò´ÓÍøÂçÓ²¼þÇý¶¯³ÌÐò½ÓÊÕ)ûÓÐÈκδ¦ÀíµÄÍêÕûÊý¾Ý±¨ÎÄ(°üÀ¨ÎïÀíÖ¡µÄÖ¡Í·)£¬Õâ¾ÍÒªÇó³ÌÐòÔ±±ØÐëÁ˽â¶ÔÓ¦É豸µÄÎïÀíÖ¡Ö¡Í·½á¹¹£¬²ÅÄÜÕýÈ·µØ×°ÔغͷÖÎö±¨ÎÄ¡£SOCK_DGRAMÌ×½Ó×ÖÊÕµ½µÄÊý¾Ý±¨ÎĵÄÎïÀíÖ¡Ö¡Í·»á±»ÏµÍ³×Ô¶¯È¥µô£¬Í¬Ñù,ÔÚ·¢ËÍʱ£®ÏµÍ³½«»á¸ù¾Ýsockaddr_ll½á¹¹ÖеÄÄ¿µÄµØÖ·ÐÅϢΪÊý¾Ý±¨ÎÄÌò¼ÓÒ»¸ǫ̈ÊʵÄÎïÀíÖ¡Ö¡Í·¡£
ĬÈÏÇé¿öÏ£®´ÓÈκνӿÚÊÕµ½µÄ·ûºÏÖ¸¶¨Ð­ÒéµÄËùÓÐÊý¾Ý±¨ÎĶ¼»á±»´«Ë͵½packetÌ×


Ïà¹ØÎĵµ£º

ʵսLinux Bluetooth±à³Ì(Áù) L2CAP±à³ÌʵÀý

ÀýÒ»£º·¢ËÍSignaling Packet£º
Signaling CommandÊÇ2¸öBluetoothʵÌåÖ®¼äµÄL2CAP²ãÃüÁî´«Êä¡£ËùÒÔµÃSignaling CommandʹÓÃCID 0x0001.
¶à¸öCommand¿ÉÒÔÔÚÒ»¸öC-frame£¨control frame£©Öз¢ËÍ¡£
 Èç¹ûÒªÖ±½Ó·¢ËÍSignaling Command.ÐèÒª½¨Á¢SOCK_RAWÀàÐ͵ÄL2CAPÁ¬½ÓSocket¡£ÕâÑù²ÅÓлú»á×Ô¼ºÌî³äCommand Code£¬Identi ......

LinuxÉ豸ģÐÍÖ®input×ÓϵͳÏê½â

Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâƪ·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´ËתÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨Õâƪ²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......

[תÌû]LinuxÇý¶¯¿ª·¢Ñ§Ï°µÄһЩ±ØÒª²½Öè

 1. ѧ»áд¼òµ¥µÄmakefile
2. ±àһЩӦÓÃ
³ÌÐò
£¬¿ÉÒÔÓÃmakefileÅÜÆðÀ´
3. ѧ»áдÇý¶¯
µÄmakefile
4. дһ¼òµ¥charÇý¶¯£¬makefile±àÒëͨ¹ý£¬¿ÉÒÔinsmod£¬ lsmod£¬ rmmod. ÔÚÇý¶¯µÄinitº¯ÊýÀï´òÓ¡hello world£¬insmodºóÓ¦¸ÃÄܹ»Í¨¹ýdmesg¿´µ½Êä³ö
¡£
5. дһÍêÕûÇý¶¯£¬ ¼ÓÉÏread£¬ write£¬ ioctl£¬ pollingµÈ¸ ......

ǶÈëʽ linux Ï ͨÓà console£¨¿ØÖÆ̨£© µÄʵÏÖ

Ç°ÑÔ£º
        µ±ÎÒÃÇʹÓÃǶÈëʽlinux ½øÐпª·¢Ê±£¬kernel ÅÜÆðÀ´Ö®ºó£¬ÎÒÃÇÏ£ÍûÄÜͨ¹ý´®¿Ú£¨±ê×¼ÊäÈë¡¢Êä³ö£©£¬ÔÚÓ¦ÓóÌÐòÕýÔÚÔËÐеĹý³ÌÖУ¬½øÐÐһЩµ÷ÊÔ¹¤×÷£¬ÀýÈ磬¶ÔCPUһЩ¼Ä´æ½øÐе÷Õû£¬ÒÔ¹Û²âµ÷ÕûÒÔºóµÄ½á¹û£¬²¢ÇÒ£¬µ±ÎÒÃÇÎÞ·¨°ÑÎÒÃǵÄÓ¦ÓóÌÐò·ÅÔÚºǫ́ÔËÐУ¬ÄÇôÎÒÃǾÍÐèÒªÊ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ