タイトルの通りなのですが、NetworkStreamを使用してデータのやり取りをしているときにOverflowExceptionが発生することが多かったのでその解決策をまとめておきます。
前提条件
- データを送る際に Packetクラスを使用してラッパしている
- PacketWriter を使用して読み書きを行う
発生原因
完璧に調べているわけではないですが、
Packetクラスでラップしているため実際のデータより少しデータが多くなることと、
読み書きの速さがとてつもなく早いことが原因だと判明しました。
解決方法
ずばりもっとも簡単な解決方法は帯域を制限することです。
具体的には Packetをラップして送るたびに カウンタの値を1増やし、
カウンタの値がXで割れるときに待機処理させるだけです。
int count = 0; while(条件) { // データの送信処理 count++; if (count % 10 == 0) { // 10回毎に 1ms 待機する Thread.Sleep(1); } }