SOCKET通信で受信を待つには?

解決


たいぽん  2005-07-12 20:34:12  No: 90949  IP: [192.*.*.*]

SOCKET通信をVB6で作成しているのですが、
受信結果を元に処理する場合に、うまく処理できません。
たとえば、COMMANDボタンを押したときに、CONNECTを行い、
そのイベントの中で、DataArrivalで受信されたデータを使って
処理を継続したいのですが、受信データを受け取る前に
CONNECT以降の処理は進んでしまいます。
こういった場合の対処方法ってあるのでしょうか?

例)
Private Sub Command1_Click()
    With Winsock1
        .RemoteHost = ””
        .RemotePort = ポート番号
        .Connect
    End With

    Label1.Caption=受信データ
    IF Label1.Caption="正常" then
        msgbox "受信成功"
    end if
END SUB

編集 削除
ガッ  2005-07-12 21:02:09  No: 90950  IP: [192.*.*.*]

Winsockコントロールが提供しているのは、
・ノンブロッキング
・非同期ソケット(ウィンドウメッセージ方式)
の希ガス。
なので、その仕様は駄目です。

編集 削除
ガッ  2005-07-12 21:03:38  No: 90951  IP: [192.*.*.*]

途中で送信…>orz

まぁ、対処としては、
・素直に、イベントを待つ。
・自力でライブラリ作る。
くらいでしょうか。

編集 削除
3−t  2005-07-13 08:02:54  No: 90952  IP: [192.*.*.*]

出来なくはないが、せっかくのイベント駆動型が台無しなソースに
なることは間違いないでしょう。

>    Label1.Caption=受信データ
>    IF Label1.Caption="正常" then
>        msgbox "受信成功"
>    end if

この処理をDataArrivalイベントプロシージャに移せばいいだけでは?

編集 削除
たいぽん  2005-07-14 16:02:28  No: 90953  IP: [192.*.*.*]

ご意見ありがとうございます。
何とか、DO LOOPとTimerを使って
無理やり待ち状態にするようにしてみました。

編集 削除