在做上位機軟件的時候,需要將上位軟件的命令傳輸到每個被控席位,也需要和被控計算機進行數據交換,我們的被控端是服務器,也可能是客戶端,甚至有時候會遇到客戶端先啟動服務端後啟動情況,要控制的機器也可能是多台,同時我們要支持TCP和UDP兩種協議。
如果采用Tcp作為連接的時候會產生如下的過程:
session代表數據交互過程,我們將這個過程抽象為會話對象(Udp也有類似的會話對象,只不過沒有Tcp的連接過程)。該對象直接管理著服務與客戶端的數據讀取與寫入過程,當有網絡數據到本地的時候,io中斷會調用session中的讀取成員函數(in_event)讀取數據,當網絡Io可以寫入數據時io中斷也會調用session的寫成員函數(out_event)將數據傳入網絡棧中。在連接的過程中客戶端需要指定遠端服務器的IP與端口,而服務端則需要指定本地綁定監聽的IP與端口號。
UDP的交互過程:
Udp節點之間沒有握手的過程,都會指定本地綁定的ip地址和端口號,Udp在數據傳輸時需要指定對端的Ip與端口號,這樣兩個節點之間就可以相互輸入與獲取數據,session也同tcp的session功能一致,只是數據讀取與寫入時系統Api不一致而已。