VMware Workstation v12
Windows 8.1 pro (64bit)
Windows 7 pro (32bit)
@tenmyo さんのコメントにて教えていただいたVMWare上のでパケットロスを試してみました。
パケットロスには以下の2つの選択肢があります。
A. 着信転送側のロス (%)
B. 発信転送側のロス (%)
受信側で着信転送ロスにすると、テストしたい通信以外にもインターネット接続でロスが起きるように思いました。
そのため、送信側の発信転送ロスの設定をしました。
UDP通信
動作環境
- UDP Echo server : Windows 8.1 pro (64bit)
- C++ Builderで自作したEcho Serverソフトを使用
- 発信転送ロスを20%に設定
- クライアント : Windows 7 pro (32bit)
- Unityで自作したUDP文字列送信ソフトを使用
動作させて気づいた事項 > [パケットロス]の定義
hello, how are you?
という文字列を送信したときのロスはパケット単位?でロスを発生する。
つまり、hello, how are you?
のロス時にはエコーバック文字列はない。
hello, how are you?
を送信して、heo, ow, r y?
のようにはならない。
後者の状況というのが現在取り組んでいる症状である。
と思うが、実際のところはWireSharkなどのキャプチャソフトを使ってみないと、間違っている可能性はある
WireSharkで確認
6000のポートへ送信後にEcho backがない通信が発生している。
上に書いたとおり、「文字列の一部がロス」ではなく、「パケット単位のロス」が発生するようだ。
TCP/IP通信
のんさんによるTCP/IPテストツールにて動作を見てみました。
http://www.vector.co.jp/soft/winnt/net/se411272.html
http://nonsoft.la.coocan.jp/
TCP/IPの場合は、送信処理でロスが発生しても、Delayの後にEcho Back文字列を受信できた。
TCP通信の再送処理が働いているようです。