tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: プログラム間の変数やりとり
投稿日: 2021/12/28(Tue) 17:22
投稿者でふぁいあんと
自己レスです。なんとか動きました。
いろいろ調べまして、名前付きパイプのクライアント側、サーバー側というのが
どうにも理解できないので、、、

vb6:文字列の受信側-----------
hPipe = CreateNamedPipe(txtPipeName.Text, _
            PIPE_ACCESS_DUPLEX, _
            PIPE_WAIT Or _
            PIPE_READMODE_MESSAGE Or _
            PIPE_TYPE_MESSAGE, _
            PIPE_UNLIMITED_INSTANCES, _
            RECV_MAXLENGTH, _
            RECV_MAXLENGTH, _
            1, _
            udtSecurityAttributes)


'Ret = ConnectNamedPipe(hPipe, 0)

strbuf = string(255," ")

  For I = 1 To 2000
  Ret = ReadFile(hPipe, ByVal strbuf, LenB(strbuf), lngNumberOfBytesRead, 0)
    If Left(strbuf, 1) <> " " Then
    Exit For
    End If
  Sleep 1000
  Next

Ret = CloseHandle(hPipe)

python側:文字列の送信側---pythonはこの掲示板の趣旨ではないので要約です。

handle = win32file.CreateFile(,,,
word = "<print>日本語</print>"
senddata = word.encode("sjis")
win32file.WriteFile(handle, senddata)

●受信側で、CreatePipeしても問題は無い
●受信側の CreatePipeのタイプアウトパラメータは効かないようで、
 ConnectPipeで送信を待つと送信側がトラブった場合に固まります。
 なのでConnectPipeは使わずに直接ReadPipeしていますが、
 ReadPipeして、ループ初回に何かデータを受信できれば問題ないですが、
 なにも来ない場合は、同じように固まります。
 この辺、何かアイデアはないかなあと検討しています。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。