我遇到的問題 在做上位機軟體的時候,需要將上位軟體的命令傳輸到每個被控席位,也需要和被控電腦進行數據交換,我們的被控端是伺服器,也可能是客戶端,甚至有時候會遇到客戶端先啟動服務端後啟動情況,要控制的機器也可能是多台,同時我們要支持TCP和UDP兩種協議。 好酒加冰塊-交互過程 如果採用Tcp作為連 ...
我遇到的問題
在做上位機軟體的時候,需要將上位軟體的命令傳輸到每個被控席位,也需要和被控電腦進行數據交換,我們的被控端是伺服器,也可能是客戶端,甚至有時候會遇到客戶端先啟動服務端後啟動情況,要控制的機器也可能是多台,同時我們要支持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不一致而已。