LinuxÄں˵ÄÁ´±í
×Ô2.1Äں˿ª·¢°æÒÔÀ´£¬linux¾ÍÒýÈëÁËÕýʽµÄÁ´±íʵÏÖ,²ÉÓõÄÊÇË«ÏòÑ»·Á´±í¡£Òò´Ë£¬ÔÚ¿ª·¢¹ý³ÌÖÐÓ¦¸ÃʹÓÃÕâЩÒÑÓеĽӿڡ£
1. ¶¨Òå
Á´±í½á¹¹Ì嶨ÒåÔÚÎļþ<linux/list.h>ÖС£
struct list£ßhead {
struct list_head *next;
struct list_head *prev;
};
ʹÓÃʱͨ³£ÐèÒª°ÑËüǶÈëµ½Äã×Ô¼ºµÄ½á¹¹ÌåÖС£
Àý£º
struct my_struct {
struct list_head list;
unsigned long dog;
void * cat;
};
ÏÂÃæ¸ø³öһЩ½Ó¿Ú£º
struct my_struct *p;
³õʼ»¯£º
/*¶¯Ì¬³õʼ»¯*/
p->dog = 0;
p->cat = NULL;
INIT_LIST_HEAD(&p->list);
/*¾²Ì¬³õʼ»¯*/
struct my_struct mine = {
.list = LIST_HDAD_INIT(mine.list);
.dog = 0;
.cat = NULL;
};
/*Ö±½ÓÉùÃ÷²¢³õʼ»¯*/
static LIST_HEAD(fox); /*ÉùÃ÷²¢³õʼ»¯Ò»¸öÃûΪfoxµÄ¾²Ì¬Á´±í*/
2. »ù±¾²Ù×÷
¸øÁ´±íÔö¼ÓÒ»¸ö½Úµã£º
list_add(struct list_head *new, struct list_head *head);
/*¸Ãº¯ÊýÏòÖ¸¶¨Á´±íµÄhead½Úµãºó²åÈënew½Úµã¡£*/
list_add_tail(struct list_head *new, struct list_head *head);
/*¸Ãº¯ÊýÏòÖ¸¶¨Á´±íµÄhead½Úµãǰ²åÈënew½Úµã¡£*/
´ÓÁ´±íÖÐɾ³ýÒ»¸ö½Úµã£º
list_del(struct list_head *entry);
/*¸Ãº¯Êý½ö½öÊǽ«entryÔªËØ´ÓÁ´±íÖÐÒÆ×ß¡£*/
list_del_init(struct list_head *entry);
/*¸Ãº¯Êý½«entryÔªËØ´ÓÁ´±íÖÐÒÆ×ß²¢Ôٴγ
Ïà¹ØÎĵµ£º
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
ÐéÄâÖ÷»ú·þÎñÉÌÔÚÔËÓª¹ý³ÌÖпÉÄÜ»áÊܵ½ºÚ¿Í¹¥»÷£¬³£¼ûµÄ¹¥»÷·½Ê½ÓÐSYN£¬DDOSµÈ¡£Í¨¹ý¸ü»»IP£¬²éÕÒ±»¹¥»÷µÄÕ¾µã¿ÉÄܱܿª¹¥»÷£¬µ«ÊÇÖжϷþÎñµÄʱ¼ä±È½Ï³¤¡£±È½Ï³¹µ×µÄ½â¾ö·½·¨ÊÇÌíÖÃÓ²¼þ·À»ðǽ¡£²»¹ý£¬Ó²¼þ·À»ðǽ¼Û¸ñ±È½Ï°º¹ó¡£¿ÉÒÔ¿¼ÂÇÀûÓÃLinux ϵͳ±¾ÉíÌṩµÄ·À»ðǽ¹¦ÄÜÀ´·ÀÓù¡£
µÖÓùSYN SYN¹¥»÷ÊÇÀûÓÃTCP/IPÐÒé3´ÎÎÕÊÖµ ......
¡¡±¾ÎÄÖÜÏêµÄ½éÉÜÁËLinuxÄÚºËÖеÄͬ²½»úÖÆ£ºÔ×Ó²Ù×÷¡¢ÐźÅÁ¿¡¢¶ÁдÐźÅÁ¿ºÍ×ÔÐýËøµÄAPI£¬Ê¹ÓÃÐèÇó¼°Ò»Ð©µäÐÍʾÀý
¡¡¡¡Ò»¡¢ÒýÑÔ
¡¡¡¡ÔÚÏÖ´ú²Ù×÷ϵͳÀͬһʱ¼ä¿ÉÄÜÓжà¸öÄÚºËÖ´ÐÐÁ÷ÔÚÖ´ÐУ¬Òò´ËÄÚºËÆäʵÏó¶à½ø³Ì¶àÏ̱߳à³ÌÏàͬҲÐèҪһЩͬ²½»úÖÆÀ´Í¬²½¸÷Ö´Ðе¥Ôª¶Ô¹²ÏíÊý¾ÝµÄ·ÃÎÊ¡£ÓÈÆäÊÇÔÚ¶à´¦ÀíÆ÷ϵͳÉÏ£¬¸üÐèÒªÒ» ......