C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DLLでのAsyncSocket利用について

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■96211 / inTopicNo.1)  DLLでのAsyncSocket利用について
  
□投稿者/ taro (17回)-(2020/10/30(Fri) 19:50:24)

分類:[C/C++] 

VC++(VS2017)で、メインプログラムからロードするDLLプログラム内で、
CASyncSocketを継承した通信制御クラスを用意して、ソケット通信をしようとしておりました。
しかし、DLLのプロセスなので、メッセージループがないためか
OnReceiveイベントなどが動かないことに気づきました。
※送信はできたのですが、ホストからの受信を受け取れませんでした。
Wiresharkで確認して通信はちゃんと届いていましたが、受信イベントが起きませんでした。
ネットで見ていると、呼出し元のEXEのメッセージループを使用すればよいなどといった記述はありましたが、
具体的にどうすればよいのかわかりませんでした。
AsyncSocketの利用をやめるしかないなども含め対処方法について相談させていただきたく思います。
引用返信 編集キー/
■96213 / inTopicNo.2)  Re[1]: DLLでのAsyncSocket利用について
□投稿者/ とっちゃん (702回)-(2020/10/31(Sat) 02:01:24)
No96211 (taro さん) に返信
> VC++(VS2017)で、メインプログラムからロードするDLLプログラム内で、
> CASyncSocketを継承した通信制御クラスを用意して、ソケット通信をしようとしておりました。
> しかし、DLLのプロセスなので、メッセージループがないためか
> OnReceiveイベントなどが動かないことに気づきました。

DLLだからと言って別プロセスで動くわけではなく、ロードしたメインプログラムのプロセスで動作します。
OnReceiveを呼び出してもらえる条件が成立していないだけだと思います。

> ネットで見ていると、呼出し元のEXEのメッセージループを使用すればよいなどといった記述はありましたが、
> 具体的にどうすればよいのかわかりませんでした。

CAsyncSocket もウィンドウを作って操作するような形で作成すれば、利用できます。
ですが、どんなプログラムなのかわからないので具体的な助言はできません。

引用返信 編集キー/
■96221 / inTopicNo.3)  Re[2]: DLLでのAsyncSocket利用について
□投稿者/ taro (18回)-(2020/11/02(Mon) 09:51:22)
解決しました。
CAsyncSocketのOnReceiveなどのイベントメッセージは、CAsyncSocketを作成したスレッドにメッセージが送信されるので、
そのスレッドでのメッセージループとWindowが必要になってくるということでした。
WindowのほうはCAsyncSocketが内部的に不可視のウインドウを持っているということで、
メッセージループを用意することで、OnReceiveイベントを受け取れることが確認できました。

ありがとうございました。

No96213 (とっちゃん さん) に返信
> ■No96211 (taro さん) に返信
>>VC++(VS2017)で、メインプログラムからロードするDLLプログラム内で、
>>CASyncSocketを継承した通信制御クラスを用意して、ソケット通信をしようとしておりました。
>>しかし、DLLのプロセスなので、メッセージループがないためか
>>OnReceiveイベントなどが動かないことに気づきました。
>
> DLLだからと言って別プロセスで動くわけではなく、ロードしたメインプログラムのプロセスで動作します。
> OnReceiveを呼び出してもらえる条件が成立していないだけだと思います。
>
>>ネットで見ていると、呼出し元のEXEのメッセージループを使用すればよいなどといった記述はありましたが、
>>具体的にどうすればよいのかわかりませんでした。
>
> CAsyncSocket もウィンドウを作って操作するような形で作成すれば、利用できます。
> ですが、どんなプログラムなのかわからないので具体的な助言はできません。
>
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ