Client Program を Windows で作成する

セッションを開設している Server に接続して、現在時刻を受信する Program を Windows で作成します。

前田稔(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_SENDM
    EditControl IDC_MSG
    Button Start UP IDC_STARTUP
    Button Recv IDC_RECV
    Button 終了 IDCANCEL
  3. windows.h をインクルードすると winsock2.h もインクルードされます。
    Wsock.h をインクルードして、ws2_32.lib と Wsock.lib をリンクして下さい。
    Wsock *App は Wsock Object Class の定義です。
    URL[] で Server のIPアドレスを定義します。
    PORT でポートアドレスを定義します。
    buf[1024] は受信メッセージを格納する領域です。
        /*************************************************/
        /*★ TCP 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= 12345;
        char        buf[1024];
        
  4. WinMain() では DialogBox を表示するだけです。
  5. WM_INITDIALOG で Wsock Object Class を生成します。
    EditBox に URL と PORT の初期値を表示します 。
        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. 受信ボタンがクリックされると App->Connect() で Saver に接続してメッセージを受信します。
    このプログラムの実行に先立って Server Program を Windows で作成する を起動しておいて下さい。
    Server からは「今日の日付と現在時刻」が編集されて送られてきます。
    実行結果の Status が進行メッセージに表示されます。
                case IDC_RECV:
                    GetDlgItemText(hDlg,IDC_URL,URL,MAX_PATH);
                    PORT= GetDlgItemInt(hDlg,IDC_PORT,NULL,FALSE);
                    App->Connect(URL,PORT,NULL,buf,1024);
                    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;
        

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