掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WinSockのDataArrivalイベントを1回だけ発生させるには (ID:78933)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
一応方法を考えました。(下記) こういうやり方は一般的でしょうか。 もしこういう方法でやったことがある方、他にいい方法のある方がいましたら教えてください。 ①相手からの受信データの始まりにデータサイズが入ってくるのでデータサイズをPeekData()で取り出す。 ②何度受信イベントが発生してもBytesReceivedプロパティがそのデータサイズ以上とならないうちは何もしない。データサイズ以上になったらGetData()を行い、受信処理を行う。 今受信したものがデータの始まりだという絶対的なものがないので 下記のようにあやしいときはとりあえずGetData()でバッファをクリアしてしまう。 ①タイマ監視して受信イベントが発生してから0.5秒以上受信イベントが発生しない場合GetData()でバッファをクリア ②データに入ってくるはずのデータサイズがありえない数値だったらGetData()でバッファをクリア ③データに入ってくるはずの年月日時分秒をチェックしてありえない数値だったらGetData()でバッファをクリア ④ソケットのErrorイベントが発生したらGetData()でバッファをクリア
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.