0. OS動作環境

  64bit Windows7 で動作検証済み。
  64bit Ubuntu 12.04 LTS で動作検証済み。


1. 必要なもの

  AZ Prolog
  OpenSSL      (SSLソケットを利用する場合)
  Crypto       (SSLソケットを利用する場合)


2. インストール

  2.1 関連アプリケーション

    SSLソケットを利用する場合は以下のアプリケーションをインストールします。

    [Unixの場合]
    > sudo apt-get install openssl
    > sudo apt-get install libssl-dev

    [Windowsの場合]
    OpenSSLは以下のサイトよりインストーラーをダウンロードしインストールします。

    (2013/12/11 現在)
    http://slproweb.com/products/Win32OpenSSL.html  (Win64 OpenSSL v1.0.1e)

    Cryptoは以下のサイトよりダウンロードしインストールします。

    (2013/12/11 現在)
    http://en.sourceforge.jp/projects/sfnet_cryptopp/downloads/cryptopp/cryptopp530win32win64/cryptopp530win32win64.zip/


  2.2 ソケット・ライブラリの生成

    Makefileを利用しコンパイルを行い、ソケットライブラリをインストールします。
    なお、コンパイルを実施する前にAZProlog変数にパスが設定されていることを確認してください。

    [Unixの場合]

    <①フルコンパイルの場合>
    > make

    <①通常ソケットのみコンパイルする場合>
    > make socket.so
    > make lib_socket.a

    <①SSLソケットのみコンパイルする場合>
    > make socket_ssl.so
    > make lib_socket_ssl.a

    <②インストール>
    > make install

    [Windowsの場合]

    <①フルコンパイルの場合>
    先に下記の<*>(Makefile.winの修正)作業を行います。
    > copy Makefile.win Makefile
    > nmake

    <①通常ソケットのみコンパイルする場合>
    > copy Makefile.win Makefile
    > nmake socket.lib
    > nmake socket.dll

    <①SSLソケットのみコンパイルする場合>
    先に下記の<*>(Makefile.winの修正)作業を行います。
    > copy Makefile.win Makefile
    > nmake socket_ssl.lib
    > nmake socket_ssl.dll

    <②インストール>
    > nmake install


    <*> Makefile.winの修正を行います。
    ==================================================
    LDLIBS_LIBEAY= {OpenSSLインストールディレクトリ}\libeay32.lib
    LDLIBS_SSLEAY= {OpenSSLインストールディレクトリ}\ssleay32.lib
    LDLIBS_CRYPTO= {Cryptoppインストールディレクトリ}\cryptopp.lib
    ==================================================
    上記の変数について自己ＰＣ環境に合わせて変更します。
    LDLIBS_LIBEAY は libeay32.lib へのフルパスを設定
    LDLIBS_SSLEAY は ssleay32.lib へのフルパスを設定
    LDLIBS_CRYPTO は cryptopp.lib へのフルパスを設定


3. 動作確認

  prologを起動し以下の述語を実行します。

  [通常ソケットの場合]
  ?-dlib_require(socket).
  yes
  ?-host2ip('www.yahoo.co.jp',GH,AH,IP),client_connect(IP,'80',S).
  GH      = www.g.yahoo.co.jp,
  AH      = www.yahoo.co.jp,
  IP      = 203.216.231.189,
  S       = 3
  yes
  ?-

  ※ IPアドレス(IP)とソケット(S)が表示されれば正常です。

  [SSLソケットの場合]
  ?-dlib_require(socket_ssl).
  yes
  ?-ssl_client_connect('127.0.0.1','443','',S).
  S       = 1
  yes
  ?-

  ※ IPアドレス(IP)とソケット(S)が表示されれば正常です。
  注)上記の例では、IPアドレス:127.0.0.1でポート:443で接続しています。
     もし同じ環境(IPアドレス:127.0.0.1でポート:443でサービスが稼働)でない場合は
     IPアドレスまたはポートを変更する必要があります。


4. API

  APIに関するドキュメントはホームページ(http://www.az-prolog.com/manual/)を
  参照してください。


5. ファイル

  Makefile                 Unix用make定義
  Makefile.win             Windows用make定義
  README.txt               このファイル
  socket.c                 通常ソケット用インターフェース実装
  socket_ssl.c             SSLソケット用インターフェース実装

//END

