UDP高階技術(併發伺服器)

2021-08-25 13:25:27 字數 682 閱讀 7593

通常所見的的tcp伺服器都是併發實現的,即服務同時處理多個請求,而不是等待前乙個完成再處理下乙個請求,這個實現得益於tcp的listen()與connect()的分工處理機制。具體為,伺服器監聽來自客戶的連線,當乙個請求到來時,伺服器fork()乙個子程序,處理該請求,然後父程序繼續監聽外部請求。

但在udp中,沒有這種監聽和連線機制,所以它必須等待前一處理完成才能繼續處理下乙個客戶的請求。但並不是說udp實現併發伺服器是不可能的,只是與上面的實現稍有不同。原理如下:伺服器(知名埠)等待一下客戶的到來,當乙個客戶到來後,記下其ip和port,然後同理,伺服器fork乙個子程序,建立乙個socket再bind乙個隨機埠,然後建立與客戶的連線,並處理該客戶的請求。父程序繼續迴圈,等待下乙個客戶的到來。在tftpd中就是使用這種技術的。

大概的實現如下:

for ( ; ; )

//child now here

peer = socket(af_inet, sock_dgram, 0);

//繫結乙個隨機埠

myaddr.sin_port = htons(0);

bind(peer,(struct sockaddr *)&myaddr, /

sizeof myaddr)

connect(peer, (struct sockaddr *)&from, /

sizeof from)

mysql udp伺服器 UDP伺服器

傳輸層主要應用的協議模型有兩種,一種是tcp協議,另外一種則是udp協議。tcp協議在網路通訊中佔主導地位,絕大多數的網路通訊借助tcp協議完成資料傳輸。但udp也是網路通訊中不可或缺的重要通訊手段。相較於tcp而言,udp通訊的形式更像是發簡訊。不需要在資料傳輸之前建立 維護連線。只專心獲取資料就...

UDP併發伺服器模型 二 select機制

上篇文章說了下 udp 併發模型。然後筆者也自己編寫了一套 基本上能顯示 udp 併發機制。大致原理參考 select機制能很好地提供多路io功能。對於本套 已基本上能提供類似 select 的功能主要函式介面 void listen head init struct list head head ...

併發伺服器

併發伺服器 伺服器使用多個控制線程,同時處理多個客戶請求。有關併發執行的細節取決於所用作業系統。但其思路很簡單 併發伺服器程式被分為主程式 執行緒 和控制代碼兩部分,主程式只接受來自客戶的連線請求,並為該客戶建立乙個控制線程 每乙個控制線程只與乙個客戶互動,並執行控制代碼程式。當處理完乙個客戶後,該...