掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Winsock Controlで一定サイズ以上の受信 (ID:120521)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VB6.0にて、Microsoft Winsock Control6.0を使用した、 通信(TCP)中継用プログラムがあるのですが、 データ受信時に 「実行時エラー '40006': 指定したトランザクションまたは要求のプロトコルまたは接続状態に問題があります。」 というエラーが表示され、プログラムが終了します。 どこで、エラーになったか調査したところ、WinsockコンポーネットのGetDataでエラーが発生していました。 ソースは以下のように記述しています。(ソースが手元にないので思い出せる範囲です) Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim RecvData() As Byte Winsock1.GetData RecvData,vbArray+vbByte,bytesTotal '←ココでエラー! '以下適当な処理 これは受信データが一定サイズ(具体的には15kより大きいぐらいのとき)におこります。エラーにならないときもあります。10k以内ぐらいですと数万回送受信してもエラーが発生したことはありませんでした。 想定では、 1. コーディングの仕方がおかしい。 2. 配列の最大サイズ、もしくは変更サイズに限界がある。 3. MSWINSCK.ocxの1回の受信最大サイズに限界がある。 とか勝手に思っていたりするのですが、 この現象を直すための方法など分かりますでしょうか? #適当にぐぐったり、過去ログみたりしましたが、見つかりませんでした。 #ちなみに、分割受信の対応などはやっています。(今思えば、最初からCや他の方法で作成しておけばよかったと思っていますが)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.