看板 Network 關於我們 聯絡資訊
※ 引述《teddypig (每天不同的期待^^)》之銘言: : 我的問題是這樣的 : 我在寫一個 Server-Client 架構的一個群播(Multicast)程式 : 我的Multicast Group address 設為 127.0.0.1 ^^^^^^^^^ 先合理的假設你描述的是用loopback這個介面來送multicast的東西. : 我把網路線拔掉 讓 server和client的傳輸不經過外部網路 : 都在同一台電腦上跑 : 正常來講 我在server端 送了 3000個封包 : 在client端應該也要收到3000封包才對 : 但是我發現會有隨機不定量的遺失, : 譬如 第一次測遺失了100個 第二次就只遺失80個 會有不固定的遺失 : 請問這樣子是正常的嗎? : 都在網卡上跑 還會有自己遺失的現象嗎? 我想主要是因為multicast 當然的是使用udp來傳輸,那udp的特性本來就是不可靠的. 所以會漏封包. 那你可能對為什麼使用loopback介面,加上網路線也都移除了,但是仍然會漏封包有疑問. 假設你是收到一個封包就在畫面上輸出一個訊息,來得知收到了一個封包,而在你沒設限 的狀況下,一般來說送封包的速度是飛快的,但是輸出到畫面上的IO是緩慢的,所以就如同 大洪水衝進了小水管,有些資訊就因此遺漏了.這邊不見得是真的有漏封包狀況,那我們可 以把輸出到畫面上的訊息改輸出到檔案來協助確認一下: ex. ./server > log.txt 2>&1 抑或是在server端收到3000個封包時,才打個訊息,這樣都可以減少因為輸出到畫面而遺漏 的資訊. 最後還是要提一下,收送封包沒有保證一次就成功的方式,所以才會有重試的機制, 只要不是漏的太誇張,應該是可以接受的. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.72.28
teddypig:我是設定每6毫秒送一個udp封包,我在client端只要有收到 07/16 23:39
teddypig:Multicast Socket傳進來的物件就+1,然後用System.out的 07/16 23:40
teddypig:方式直接印出來 才判斷說 收到的量跟server傳的量有沒有 07/16 23:42
teddypig:一致 07/16 23:42
kaeluno1:了解,之前我試著一次送10000個封包,結果畫面上顯示幾乎都 07/17 08:39
kaeluno1:是低於2000個,改用我描述的方式之後,就變成偶爾才會看到 07/17 08:40
kaeluno1:有封包漏,後來試了一下每秒送一個,那也是收到封包就印一 07/17 08:42
kaeluno1:次訊息,也是可以全部顯示. 07/17 08:43
teddypig:我看我要調降一下傳輸速度了 請問你的測試也是loopback嗎 07/17 10:51
kaeluno1:嗯!我是用loopback沒錯 07/17 11:08