HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
1106
(´ω`)pcbnet2: tcprecvについて2解決


(´ω`)

リンク

2010/11/6(Sat) 18:06:28|NO.35695

ついさっきまでものすごく悩んでいたバグが解けたので、備忘録代わりに。

pcbnet2でのtcprecvですが、先にサーバからクライントへ送信するデータサイズを知らせておき
クライアントではtcpcountで到着データ量を確認する処理が必要です。
tcprecvそのものには、サーバから送られたデータをただ受信する機能しかなく、stat値を見て
データ量が少なくても、それが遅延によるものかロストによるものかは判断できません。

サーバ&クライアントがlocalhost内で完結してる環境では速度が速くて上記遅延が発生しない
ので、tcpcountで把握しなくても送受信がうまくいってしまうためこの条件に気づきにくかった
です。

死むかと思いました。
以上、いつかどなたかの参考になりましたら幸いです。(;ω;)



この記事に返信する


SsT

リンク

2010/11/6(Sat) 19:45:12|NO.35696

ん?
TCPは見えないところで再送などの処理を行うので基本的にはロストすることは無いはずです。

tcprecvは終端コードを決めておいて
終端コードを受信していない:受信したデータを変数に保存して、tcprecvをもう一度実行
終端コードを受信:処理を行う

とするのが一般的かと思われます。



(´ω`)

リンク

2010/11/7(Sun) 08:18:43|NO.35704

>TCPは見えないところで再送などの処理を行うので
>基本的にはロストすることは無いはずです

アラ!てっきりロストもよく発生するもんだと思ってました……
あと、tcprecvを複数回実行すれば、残りも受信できるんですね。なるほど。

いろいろと勉強になりました。
お恥ずかしい。(u´ω`)



ONION software Copyright 1997-2023(c) All rights reserved.