[問題] Socket server 資料處理問題
各位前輩好,想請教關於Server以及data處理的問題。
目前我想做的事情是建立一個Server供多個Client連線並且進行不間斷的data傳遞。
收到data後解析封包並將資訊顯示在Form的listbox上。
我現階段的架構是使用MVC,Form裡有一個Form controller。Controller內部包含一個
Server。
Server是以同步和多執行緒來實做。每個連進來的client都是一個執行緒在處理receive
後的資料。server還有收到data的event供controller觀察,以及n個queue來存放n個
client傳來的heartbeat。
Server收到data後會解析類型並且讀取需要的長度存入byte[]。接著利用事件invoke
將此byte[]傳出給controller。controller將此byte[]處理後保存至記憶體。並且也
invoke事件讓form去更新UI畫面。而若是收到heartbeat則加入該對應的queue中。
由server內部自己一條背景執行緒來回應。
每個Client傳遞給Server的資料量約是2MB/s。目前遇到的問題是當client變多時,
heartbeat回應給client的時間間隔就會越來越長。最終導致client端timeout而斷線。
若無heartbeat機制也會因為server端的buffer越積越多而爆掉。
是否因為我在server就將資料分析並且每取得一筆資料都invoke一次而導致處理慢了?
有想過是否要將server端receive出來的資料直接丟給controller去處理就好,但這樣
會不會變成是controller中的buffer爆掉?
這是第一次做server和client的東西,不知道該如何做會比較好。希望前輩能指點一下。
如果敘述很難理解需要我的程式碼,我也可以貼出來,非常感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.8.75.51
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1441444597.A.561.html
→
09/05 18:24, , 1F
09/05 18:24, 1F
→
09/05 21:01, , 2F
09/05 21:01, 2F
→
09/05 21:02, , 3F
09/05 21:02, 3F
→
09/05 21:59, , 4F
09/05 21:59, 4F
→
09/10 23:49, , 5F
09/10 23:49, 5F
→
09/10 23:50, , 6F
09/10 23:50, 6F
→
09/10 23:51, , 7F
09/10 23:51, 7F
→
09/10 23:55, , 8F
09/10 23:55, 8F
→
09/12 21:31, , 9F
09/12 21:31, 9F
→
09/12 21:32, , 10F
09/12 21:32, 10F
→
09/13 11:07, , 11F
09/13 11:07, 11F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章