Socket linux網路多路復用IO技術

2021-09-06 10:41:52 字數 2084 閱讀 4073

1.mystery引入

1)select是一種多路復用io輸入輸出模式,在linux的輸入輸出程式設計中通過select的輪詢機制,發現可用/可讀或可寫的介面。

2)低階socket程式中有乙個共同點:都是基於阻塞式的程式設計方式

3)非阻塞式是函式呼叫時不阻塞,不管函式執行成功與否,都會立即返回。

4)優點:程式效率提公升

5)缺點:返回的結果往往是錯誤的型別碼

6)解決方案:select機制。

2.例項操

1)基於select模式實現乙個網路echo的服務程式,即客戶端向服務端傳送資訊,伺服器接收到資訊後,再將資訊原樣**給客戶端

2)需要設定select函式

3)若當前有新連線,則加入到客戶端套接字集合,若數量過載,則斷開本次連線,並傳送提示資訊:sorry overload

4)源**

#include #include #include #include #include #include #include #include #include #define server_port 5555

#define queue_length 5

#define buf_size 200

int main(void)

if (setsockopt(server_socket, sol_socket, so_reuseaddr, &yes, sizeof(int)) == -1)

server_addr.sin_family = af_inet;

server_addr.sin_port = htons(server_port);

server_addr.sin_addr.s_addr = inaddr_any;

memset(server_addr.sin_zero, '\0', sizeof(server_addr.sin_zero));

if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1)

if (listen(server_socket, 5) == -1)

printf("listen port %d\n", server_port);

fd_set clientfdset;

int maxsock;

struct timeval tv;

conn_num = 0;

sin_size = sizeof(client_addr);

maxsock = server_socket;

while (1)

}ret = select(maxsock + 1, &clientfdset, null, null, &tv);

if (ret < 0)

else if (ret == 0)

// check every fd in the set

for (i = 0; i < conn_num; i++)

else}}

if (fd_isset(server_socket, &clientfdset))

if (conn_num < queue_length)

else}}

for (i = 0; i < queue_length; i++)

}}

3.mystery注

1)設定高階socket屬性引數中的應用引數so_reuseraddr,實現位址的可重複利用

2)fd_set(int fd, fd_set *fdset):向檔案描述符集合中增加乙個新的檔案描述符

3)fd_clr(int fd, fd_set *fdset):向檔案描述符集合中刪除乙個檔案描述符

Socket linux網路多路復用IO技術

1.mystery引入 select是一種多路復用io輸入輸出模式,在linux的輸入輸出程式設計中通過select的輪詢機制,發現可用 可讀或可寫的介面。低階socket程式中有乙個共同點 都是基於阻塞式的程式設計方式 非阻塞式是函式呼叫時不阻塞,不管函式執行成功與否,都會立即返回。優點 程式效率...

Socket linux網路多路復用IO技術

1.mystery引入 select是一種多路復用io輸入輸出模式,在linux的輸入輸出程式設計中通過select的輪詢機制,發現可用 可讀或可寫的介面。低階socket程式中有乙個共同點 都是基於阻塞式的程式設計方式 非阻塞式是函式呼叫時不阻塞,不管函式執行成功與否,都會立即返回。優點 程式效率...

Socket linux網路掃瞄程式開發

1.mystery引入 1 系統入侵步驟 系統發現 漏洞探測 漏洞利用 痕跡清除 2 掃瞄器分類 主機與網路掃瞄器 埠服務掃瞄器 服務漏洞掃瞄器 3 tcp埠掃瞄技術分為三種 全連線掃瞄 syn掃瞄以及fin掃瞄 4 udp埠掃瞄技術一般採用icmp報文埠不可達的資訊來識別udp埠是否開放 5 全連...