掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WinsockAPI使用時にファイルが開けない (ID:113885)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いちゆさん、レスありがとうございます。 詳しいことは分からないんですけど、おそらく、問題のプログラムが 処理を占有してしまっているのが原因ではないかと思います。 他のアプリケーションに制御を渡すことができれば、解決できると思うのですが…。 受信待ちの処理はループで実行しているわけではなく、recvfrom関数をコールすると、 後はバインドしているポート番号に、何らかのデータを受信するまで、 そのステップで実行が止まっているようなイメージです。 (少なくとも、VBのエディタ上でステップ実行をするとそのように見えます。) なので、「DoEventsを実行してOSに制御を渡す」といったこともでそうにありません。 ひとまず、ソースを記載致します。 解決策でなく、何かヒントになるような情報でも構いませんので、 みなさん、ご協力お願い致します。 '■Winsockの使用を開始 lngWin32apiResultCode = WSAStartup(MAKEWORD(1, 0), mudtWSAData) '■ソケットを新規に作成 lngSocketDescriptor = socket(AF_INET, SOCK_DGRAM, 0) '■ソケットの情報を指定 With udtSocketAddress .sin_family = AF_INET .sin_addr.S_addr = INADDR_ANY .sin_port = htons("10364") End With '■自ネットワークアドレスとポート番号をソケットに結合 lngWin32apiResultCode = bind(lngSocketDescriptor, udtSocketAddress, Len(udtSocketAddress)) '■構造体の長さを指定 lngSocketAddressLen = Len(udtSocketAddress) '■無限ループで受信を実行 Do Until blnDummyFlag = True strReceiveData = "" '■ソケットからデータグラムを受信 lngWin32apiResultCode = recvfrom(lngSocketDescriptor, strReceiveData, Len(strReceiveData), 0, _ udtSocketAddress, lngSocketAddressLen) '■受信したメッセージを表示 MsgBox Trim(strReceiveData), vbInformation + vbMsgBoxSetForeground, "MERS_DWH" Loop '■ソケットをクローズ lngWin32apiResultCode = closesocket(lngSocketDescriptor) '■Winsockの使用を終了 lngWin32apiResultCode = WSACleanup()
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.