原创 非堵塞IO的讀與寫的回射客戶端對比分析

一、非堵塞讀與寫分析 1、老版本1分析--- 基於tcp的堵塞io模型 是read和write,結合起來處理的io模型,因爲如果服務器沒有數據過來,那麼read將會一直堵塞下去。因爲堵塞將會導致程序的效率不夠高效。 僞代碼如下如實: w

原创 在類的成員函數中調用delete this

在類的成員函數中能不能調用delete this?答案是肯定的,能調用,而且很多老一點的庫都有這種代碼。假設這個成員函數名字叫release,而delete this就在這個release方法中被調用,那麼這個對象在調用release方

原创 基於TCP的不同IO版本的時間性能分析

一、關於各種IO的執行情況分析 涉及的IO類型: 基本堵塞IO版本、 select下堵塞IO版本、 非堵塞IO版本、 fork版本、 線程化版本。 服務器核心代碼: dg_echo.c #include "unp.h" void

原创 TCP非堵塞IO的connect連接處理模型

一、非堵塞connect版本 當在非堵塞TCP套接字上, 我們調用connect函數會立刻返回EINPROGRESS, 不過此時TCP三路握手正在進行, 我們可以通過檢查套接字的狀態。 *非堵塞connect有三個用途 1)、我們可以把

原创 fork條件下的套接字io模型分析

一、fork下版本套接字io版本 本模型下套接字io, 父進程標準輸入並且把數據發送到服務器。而子進程負責接收來自服務器的數據並且標準輸入 模型圖如下: + 源代碼如下: dg_cli_fork.c #include "unp.h"

原创 TCP四次揮手詳解狀態裝換分析

   一、TCP終止過程(四路揮手) 1)、某個進程調用close函數,主動關閉。該端發送一個FIN分節,表示數據發送完畢。 2)、接受到FIN分節的對端,被動關閉。 3)、然後一段時間後。 對端也發送一個FIN分節 4)、主動關閉端口,

原创 多播套接字選項分析

一、IP_ADD_MEMBERSHIP、IPV6_JOIN_GROUP和MCAST_JOIN_GROUP 在一個指定的本地接口上面添加一個不限源的多播組。我們將會有以下三個結構來表示添加和離開多播組 struct ip_mreq{ s