IO復用的高階應用 同時處理 和 的服務

2021-07-31 20:30:19 字數 493 閱讀 6442

從bind 系統呼叫引數來看,乙個socket只能與乙個socket位址繫結,即乙個socket只能監聽乙個埠,因此伺服器要監聽多個埠,必須建立多個socket, 然後io  復用poll  epoll  select 來檢測各個埠.

如果乙個伺服器同時要處理tcp  和 udp連線,則需要建立多個socket: 乙個流套接字,乙個資料報套接字,並將他們都繫結到該埠上

下面的**就是乙個回射伺服器同時處理同乙個埠上的tcp  ,udp 請求.

utili.h  檔案:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

ser.c檔案:

高階IO復用應用 聊天室程式

簡單的聊天室程式 客戶端從標準輸入輸入資料後傳送給服務端,服務端將使用者傳送來的資料 給其它使用者。這裡採用io復用poll技術。客戶端採用了splice零拷貝。服務端採用了空間換時間 分配超大的使用者資料陣列,然後通過使用者連線的檔案描述符即可以索引到使用者資料 客戶端程式 define gnu ...

I O復用的應用場合

i o復用 select poll 典型使用在下列網路應用場合 1 當客戶處理多個描述字 通常是互動式輸入和網路套介面 時,必須使用i o復用。2 乙個客戶同時處理多個套介面是可能的,不過比較少見。3 如果乙個tcp伺服器既要處理監聽套介面,又要處理已連線的套介面,一般就要使用i o復用。4 如果乙...

I O復用 各種不同的IO模型

我們看到上面的tcp客戶同時處理兩個輸入 標準輸入和tcp套接字。我們遇到的問題就是在客戶阻塞於 標準輸入上的 fgets呼叫期間,伺服器程序會被殺死。伺服器tcp雖然正確地給客戶tcp傳送乙個fin,但是既然客戶程序阻塞於從標準輸入讀入的過程,它將看不到這個rof,知道從套接字讀時為止 可能已經過...