假想圖:
說明:
1、#C代表照片發送的客戶端機,#S代表接收的服務端機。
2、照片是廣播方式實時傳送的,所以必須得保證資料正確且不丟包。
預想:
1、采用UDP方式廣播資料,資料結構里包含#C的機號,#S根據機號判斷是否接收完全。比如,1號機發過來的資料還沒接受完,此時2號機又有圖片傳過來,那么這個時候就要新創建一個玩意(陣列?流?)來儲存2號機發過來的,同時還要繼續接收1號機的資料,如果這個時候3號機又發來個東西,那么又要新創建一個玩意來儲存3號機的資料。
2、前提是有多少臺客戶端機不確定,所以接收端要實時準備創建一個玩意接收一個新的資料,并寫入INI,下次啟動讀取INI就知道上一次有多少臺#C了,就不用動態創建,直接創建好。
3、如果接收完,那么則要保存后清空,然后繼續接收該機號的資料。比如,1號機資料接收完了,那么要準備接收下一個1號機的包。每臺#S根據發過來的姓名判斷這張圖片是否需要接收。
問題:
接收端資料結構如何定義?創建個什么來儲存新機號發過來的資料,陣列?流?怎么建啊。求仙人指路。
一對一,一對多資料接收結構:
Type
PicData=https://bbs.csdn.net/topics/ ^TPicData;
TPicData = record
msgtype:TAVMsgType; //1 命令;
Index: byte; //1 第幾個包;
Num: byte; //1 總計幾個包;
DLen: integer; //4;本包有效資料(Info指向的資料)長度
Data: Pointer; //4 本包有效資料指標;
Cid : byte; //1 機號
Name: AniString; //4 姓名
多對多資料接收結構
Type
PicData = ^TPicData;
TPicData = record
?:?
·
·
·
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
客戶端規模、實時性、穩定性要求,導致了一鍋通信系統要做好,有很多坑要繞過不考慮這些,則demo就可以實作了:socket服務端控制元件,本身是可以多執行緒,每個執行緒專門服務一個連接
uj5u.com熱心網友回復:
肯定應該保存成檔案。uj5u.com熱心網友回復:
我現在用的是IDUDPClient發送,IDUDPServer接收,一對一沒問題,多對一或者多對多就不行了,好像UDPServer這邊通信會阻塞,網路條件差的一方圖片根本擠不進,更差的情況會丟幀,圖片顯示不完全等。傳輸距離考慮100米到300米左右,UDPServer這邊處理寫到執行緒里嗎?還有另外問下大神,有什么辦法能提高處理效率嗎?
uj5u.com熱心網友回復:
同上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/113139.html
標籤:網絡通信/分布式開發
上一篇:打開pas檔案時,D5報Error creating form:Access violation at address 40061FA9 in module '
