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
Winsockコントロールが提供しているのは、
・ノンブロッキング
・非同期ソケット(ウィンドウメッセージ方式)
の希ガス。
なので、その仕様は駄目です。
途中で送信…>orz
まぁ、対処としては、
・素直に、イベントを待つ。
・自力でライブラリ作る。
くらいでしょうか。
出来なくはないが、せっかくのイベント駆動型が台無しなソースに
なることは間違いないでしょう。
> Label1.Caption=受信データ
> IF Label1.Caption="正常" then
> msgbox "受信成功"
> end if
この処理をDataArrivalイベントプロシージャに移せばいいだけでは?
ご意見ありがとうございます。
何とか、DO LOOPとTimerを使って
無理やり待ち状態にするようにしてみました。
ツイート | ![]() |