Re: [問題] 在本機端跑群播封包 會有遺失嗎?

看板Network作者 (峰)時間16年前 (2009/07/16 20:08), 編輯推噓2(208)
留言10則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

07/16 23:39, , 1F
我是設定每6毫秒送一個udp封包,我在client端只要有收到
07/16 23:39, 1F

07/16 23:40, , 2F
Multicast Socket傳進來的物件就+1,然後用System.out的
07/16 23:40, 2F

07/16 23:42, , 3F
方式直接印出來 才判斷說 收到的量跟server傳的量有沒有
07/16 23:42, 3F

07/16 23:42, , 4F
一致
07/16 23:42, 4F

07/17 08:39, , 5F
了解,之前我試著一次送10000個封包,結果畫面上顯示幾乎都
07/17 08:39, 5F

07/17 08:40, , 6F
是低於2000個,改用我描述的方式之後,就變成偶爾才會看到
07/17 08:40, 6F

07/17 08:42, , 7F
有封包漏,後來試了一下每秒送一個,那也是收到封包就印一
07/17 08:42, 7F

07/17 08:43, , 8F
次訊息,也是可以全部顯示.
07/17 08:43, 8F

07/17 10:51, , 9F
我看我要調降一下傳輸速度了 請問你的測試也是loopback嗎
07/17 10:51, 9F

07/17 11:08, , 10F
嗯!我是用loopback沒錯
07/17 11:08, 10F
文章代碼(AID): #1ANnX6zv (Network)
文章代碼(AID): #1ANnX6zv (Network)