看板 Visual_Basic 關於我們 聯絡資訊
大家好 小弟目前正在寫一個類似MSN的程式 目前正在寫上線通知這一塊 對於VB.NET的網路程式設計比較不熟所以來請問大家 我想做的是某個人上線可以即時的通知其他人 關於這部分有什麼比較好的做法嗎? 因為我翻書 大部份網路都只有介紹TCP跟UDP 可是TCP要一個一個建立連線 很費時 萬一要是其中一個一直連線失敗就會等很久 還有如果需要通知的人數很多的話 就會要建立很多連線 費時又麻煩 UDP雖然比較快 可是怕會掉包沒收到 所以想請問大家有沒有比較好的想法可供小弟參考一下 之前我寫過JAVA的Multicast 不過VB好像沒有這一塊 而且當初寫完試用時 有時後封包也會被NAT檔掉= =" 我目前用的是比較土法煉鋼的暴力法= = 先將上線or下線狀態記錄在資料庫 然後client端固定30秒去更新一次 可是這樣程式負擔很大 而且也沒辦法達到及時的效果.... 我在想有沒有辦法從MS SQL資料庫直接通知VB的程式?? 也就是某A上線→去資料庫更新狀態→"資料庫"通知某B 某A上線了 我想應該是有 不過小弟不知道關於這一塊的技術叫做是......? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.196.55
fumizuki:通常不會server主動通知client 07/20 15:09
fumizuki:一定是client去server取得訊息 07/20 15:09
fumizuki:server主動通知的話負擔會非常的重 07/20 15:10
fumizuki:我的想法是這樣 client每幾秒就會向server取得狀態一次 07/20 15:11
fumizuki:這個時候server再傳相關的訊息給client 07/20 15:12
fumizuki:我想bbs的水球應該是主動通知的 msn訊息是被動通知的 07/20 15:14
vn801368:我現在的做法就是每30秒取得狀態一次啦 07/20 15:15
vn801368:不過程式感覺LOAD很重 而且這樣就做不到即時效果@@ 07/20 15:17
vn801368:如果某A30秒內上線完下線 這樣某B可能會什麼都不知道 07/20 15:18
vn801368:當然用SERVER主動通知LOAD會更重我也知道啦 07/20 15:18
vn801368:我只是想知道有沒有這樣的技術而已^^" 07/20 15:18
fumizuki:程式是有多少內容 怎麼會load重 除非有很多人在測試這個 07/20 17:48
fumizuki:程式 07/20 17:48
fumizuki:30秒有點長了 不過不管多少時間 訊息是儲存在佇列中 07/20 17:49
fumizuki:等著client去接收 07/20 17:49
fumizuki:不管另一方是否在線上 都一樣收得到 07/20 17:49
fumizuki:開一個資料表就專門放上下線及即時傳訊等各種訊息 07/20 17:50
fumizuki:等接收者來接收 07/20 17:50