なでしこ > Delphi > 戻る

非同期通信

 前回までに作ったプログラムは同期型の通信で、データを受信してる間はフリーズしたように動きません。しかしこれでは困る場合があるので、今回は非同期通信を行います。
■非同期通信の仕方

非同期通信の仕方

 非同期通信と言っても、方法自体は同じです。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の送受信専用のウィンドウを作って処理することができます。

非同期通信 非同期通信

→非同期通信のプログラム



→トップへ →目次へ