掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Winsock(TCP)を用い、タイマーと連携させて一定パケットを送るには? (ID:76344)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Winsockコントロールで、TCPセッションを保ち、数秒おきに100発程度 (内部データ一部インクリメント)送信したいのですが、一向にうまくいきません。 というよりなぜかすさまじく大きいパケットができ、送信時にフラグメントしてしまいます。 以下がコードになります。Winsockでうまくデータが飛ばないとMicrosoftにバグ情報があり SP5あてたにも関わらずなのですが、、、、あと使用目的はネットワーク評価でプロトコル種別 を一定時間流す為であり、DoS目的ではない事を予めご了承ください。 例1)・・・・このケースができれば全てうまく行くと思うのですが、、、 dim i as integer dim data(46) as byte for i = 0 to 99 winsock.senddata data next i 例2) winsock.senddatacompleteイベントでフラグを付ける場合 data(42)〜data(45)はIPアドレス private タイマー() '10秒更新 bgp_con.SendData data '一発目のデータ if flag = 1 Then '1発目のデータ送信後 increase 'データ内部に存在するIPアドレスをインクリメントするルーチン End If end sub Private Sub winsock_SendComplete() flag = 1 End Sub sub increase() For m = 1 To 98 If flag = 1 Then If data(45) < 255 Then data(45) = data(45) + 1 Else If data(44) < 255 Then data(45) = 1 data(44) = data(44) + 1 Else If data(43) < 255 Then data(44) = 1 data(43) = data(43) + 1 Else data(43) = 1 data(42) = data(42) + 1 If data(42) = 222 Then m = 98 End If End If End If End If flag = 0 winsock.SendData data 'インクリメントしたデータを送信するはず、、 Next m end sub このケースの場合は始めの一発だけしか飛びません。 ループ内部にあるsenddataは働いていない?ように見えます。 働いていたらsenddatacompleteに飛びフラグ"1"を付加するはずですが、、、 例3) 最後のインクリメント部分を無限ループにしました。(winsockが動いているか確認する為) flag = 0 bgp_con.SendData open_bgp Else m = m - 1 'データが正常に送られるまでループを繰り返す、、 End If Next m 結果、無限ループに落ちいり、Snifferで見ても何も送信されていない様に見えました。 こういう場合どのように対策すれば宜しいか、是非教えていただきたく。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.