非同期通信と言っても、方法自体は同じです。WSAAsyncSelect という命令を使って通知先のウィンドウを指定しておけば、そのウィンドウに、データを受信したとか通信が閉じられたとか、情報が送られてきます。
指定の方法は、以下のように指定します。FSocketには通信に使うソケット、FWindowには指定したウィンドウに設定します。
// 通知先のウィンドウの設定
WSAAsyncSelect(FSocket, FWindow, WM_WINSOCK_ASYNC_MSG,
FD_CONNECT or FD_WRITE or FD_READ or FD_CLOSE);
DelphiのClassesユニットには、AllocateHWnd という不可視のメッセージ受信専用のウィンドウを作成する関数があります。
そこで、これを使えば、TCP/IPの送受信専用のウィンドウを作って処理することができます。
非同期通信 |