掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ActiveX DLLでWinsockコントロールの制御 (ID:85936)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
他の掲示板で投稿 (http://www.takeittechies.com/vbtomo/boards/vbqanda.php?do=leaf&num=4828) していたのですが最終投稿から1週間が過ぎてしまい、いまだ解決していませんの でこちらでも投稿させていただきます。 対処法が分かる方がおりましたら回答をお願いいたします。 問題点: ActiveX DLLで非表示のフォームにWinsockコントロールを貼り付けて制御をしてい るプログラムがあるのですが、Connect時に「Sockエラー10022:ソケットが連結さ れていないか、アドレスが不正か、またはAccept メソッドの前に Listen メソッ ドが呼び出されていません。」が発生する時があります。 エラーが発生する条件としてIDE上で連続2回以上(1回目はOKだけど一度終了 して再度)デバックしようとした時に発生しています。IDEを立ち上げ直せば再 度デバックできるようになるのですが、立ち上げなおさなくてもデバックできる ようになる方法は無いでしょうか。 環境はWin2000+SP4, VB6+SP5を使用してます。 他掲示板でのやりとり: > Microsoft の KnowledgeBase で "10022" を検索すると、いくつかの記事が見つ > かります。この中に思い当たる原因はないでしょうか? > http://support.microsoft.com/default.aspx?scid=fh;JA;KBHOWTO > KnowledgeBase の検索ですが17件ヒットしましたがいずれも違っていました。 「Sockエラー10022」の解釈である 「アドレスの不正」はIDE起動後の初回デバッグはできるので大丈夫だと思います。 「Accept〜」はクライアント側なので関係なさそうです。 「ソケットの連結」はどのような状態を示しているのか分かりませんが、IDE起 動後の初回デバッグはできるので大丈夫だと思います。 googleでも「10022 Connect ソケット」などと検索したのですが、今のところお手 上げ状態です。 > ひとつ思うのは、「二回目がエラー」ということは、「一回目が正しく終わっていない」、 > という事なんじゃないかと。 > > Close メソッドは発行していますが、それが完了する前にプログラムが終了してしまって > いるのではないでしょうか? Close イベントを待機してみたらどうでしょう? > #Close イベントが起こっているか確認するだけでも良い。 > winsockコントロールはCloseメソッドを使用してもCloseイベントは発生しない仕様になっているよ うです。Closeイベントは相手側にCloseされた時に発生するみたいです。 なのでStateプロパティで(Closeメソッドの直下で)確認したところsckClosedになっていましたので 閉じてはいるみたいです。 「二回目がエラー」というのはデバッグの回数(F5の押下数)なので、例えばフォームをUnloadせずに Commandボタンの1(Connect)->2(Close)->1(Connect)->2(Close)と押下しても正しく動作します。 IDEがActiveXDLLをメモリに残そうとして変な風に悪さしているのかな。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.