開發語言Delphi;
功能:主機發信號,由于客戶機不知道主機什么時候發信號(1分鐘內),客戶機在1分鐘內(100臺左右)不停監測主機發出的信號,根據信號,在客戶機作出相應的動作
網路環境:互聯網(廣域網)
精度最好精確到秒。
之前的做法是,通過Web服務器修改一個txt檔案,客戶機用TIdHTTP不停的讀取一個網址http://www.xxx.com/a.txt,根據內容判斷。但這樣發現一是客戶機TIdHTTP不停的讀取有問題,主機的web服務器也會有問題。
誰還有什么辦法嗎?以前在一個局域網的話用過Tcp的連接,開埠連接,設一臺服務器主機
uj5u.com熱心網友回復:
主機向互聯網中的客戶機發送資料,必須知道客戶機的地址,也就是客戶機必須通過埠首先連接至主機。主機可輪流向客戶機發送資料。這種情況一般采用客戶機主動查詢后執行為好,因為你不知道客戶機什么時間開機,你發送命令時客戶機沒開機,客戶開機時你已經發過命令了,這個客戶機就漏掉了。殺毒軟體的升級就是客戶端主動查詢的。uj5u.com熱心網友回復:
TCP連接是可以的。WINSOCK在這方面足夠強大。uj5u.com熱心網友回復:
服務器使用TServerSocket、客戶端使用TClientSocket,就可以讓服務器向客戶端“廣播”了。至于什么情況下廣播,就要視乎你的實際情況了。uj5u.com熱心網友回復:
TCP通訊無法精確到秒的,可以使用SOCKET長連接,然后由服務主動下發。uj5u.com熱心網友回復:
同意樓上兩位uj5u.com熱心網友回復:
khfp...uj5u.com熱心網友回復:
主機用UDP給客戶機發信號就可以了。uj5u.com熱心網友回復:
UDP包不安全,丟包不知uj5u.com熱心網友回復:
這是很容易解決的,可以模仿TCP的三次握手方式,主機發送命令后,客戶機收到后要有一個應答,主機收到應答(這是正常的情況)就知道命令發送成功了,如果在一定時間之內(比如2~3秒)沒有收到應答,就重發一次命令,還沒有收到應答,就認為是該客戶機或者網路有問題,記錄下來就可以了。uj5u.com熱心網友回復:
Idtcpclient/IdTCPServer配合,不會漏掉一個。當然除連接或讀寫超時除外。uj5u.com熱心網友回復:
很簡單的。 Idtcpclient/IdTCPServer配合,定好通訊協議就可以了。uj5u.com熱心網友回復:
你定一個簡單的通訊協議,握手/復位/發資料/接資料/結束。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/151837.html
標籤:網絡通信/分布式開發
上一篇:用Delphi做一個背單詞軟體
