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

解決


たいぽん  2005-07-13 05:34:12  No: 90949

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-13 06:02:09  No: 90950

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


ガッ  2005-07-13 06:03:38  No: 90951

途中で送信…>orz

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


3−t  2005-07-13 17:02:54  No: 90952

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

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

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


たいぽん  2005-07-15 01:02:28  No: 90953

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加