Winsock で Web Server に接続する

接続画像

Web Server に接続して、サーバーから送られてきた TEXT 情報を EditBox に表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. このプログラムは、私が作成した Wsock Object Class を使用します。
    新規プロジェクトを作成して、次のファイルをプロジェクトのフォルダーに格納して下さい。
    ファイル 説明
    Main.cpp メインプログラムファイル
    Wsock.h Wsock Object Class のヘッダファイル
    Wsock.lib Wsock Object Class のライブラリ
  2. ページ先頭の画像を参考に DialogBox を作成して下さい。
    BOX キャプション ID
    DialogBox TCP Client IDD_DIALOG1
    EditControl URL IDC_URL
    EditControl PORT IDC_PORT
    EditControl IDC_MSG
    EditControl IDC_RCVMSG
    Button Start UP IDC_STARTUP
    Button Recv IDC_RECV
    Button 終了 IDCANCEL
  3. Wsock.h をインクルードして、ws2_32.lib と Wsock.lib をリンクして下さい。
    Wsock *App は Wsock Object Class の定義です。
    URL で Web Server を指定します。
    PORT でポートアドレス(Wab のときは 80)を定義します。
    GetMsg[40] は Server に送るメッセージです。
        /**************************************************/
        /*★ HTML Client  Wsock Object Class    前田 稔 ★*/
        /**************************************************/
        #include    <windows.h>
        #include    "Wsock.h"
        #include    "resource.h"
        #pragma     once
        #pragma     comment(lib,"ws2_32.lib")
        #pragma     comment(lib,"Wsock.lib")
    
        Wsock       *App= NULL;     //Wsock Object Class
        char        URL[MAX_PATH]= "127.0.0.1";
        int         PORT= 80;
        char        buf[2048];
        char        GetMsg[40]=    "GET / HTTP/1.0\r\n\r\n";
        
  4. WinMain() では DialogBox を表示するだけです。
  5. WM_INITDIALOG で Wsock Object Class を生成します。
    EditBox に URL と PORT の規定値を表示します 。
    Web server のポート番号は 80 です。
        case WM_INITDIALOG:
            App= new Wsock();
            SetDlgItemText(hDlg,IDC_URL,URL);
            wsprintf(buf,"%d",PORT);
            SetDlgItemText(hDlg,IDC_PORT,buf);
            break;
        
  6. Start UP ボタンのクリックで Winsock の初期設定を行います。
    この操作は、最初に一度だけ実行します。
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {   case IDC_STARTUP:
                    App->Startup();
                    SetDlgItemText(hDlg,IDC_MSG,App->szMSG);
                    break;
        
  7. Recv ボタンがクリックされると URL と PORT で指定された Web Server に接続します。
    GetMsg を Server に送って TEXT を送信するように要求します。
    buf, 2048 に TEXT が格納されて帰ってくるので Edit Box で表示します。
    実行結果が進行メッセージに表示されます。
                case IDC_RECV:
                    GetDlgItemText(hDlg,IDC_URL,URL,MAX_PATH);
                    PORT= GetDlgItemInt(hDlg,IDC_PORT,NULL,FALSE);
                    App->Connect(URL,PORT,GetMsg,buf,2048);
                    SetDlgItemText(hDlg,IDC_RCVMSG,buf);
                    SetDlgItemText(hDlg,IDC_MSG,App->szMSG);
                    break;
        
  8. WM_CLOSE では Wsock Object Class を開放して下さい。
            case WM_CLOSE:
                SAFE_DELETE(App);
                EndDialog(hDlg, TRUE); 
                return TRUE;
        
  9. 以下のサーバーにアクセスして TEXT 情報の取得を確認しました。
    www.google.co.jp
    www.yahoo.co.jp
    www13.plala.or.jp
  10. VAIO に構築した Apache(Web Server のソフト)を起動して確認しました。
    [スタート][プログラム][Apache HTTP Server][Control Apache Server] から起動して下さい。
    URL に貼り付けて TEXT 情報を取得します。
    127.0.0.1
    localhost

超初心者のプログラム入門(Win32API C++)