• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            斜樹的空間

            集中精力,放棄一切的去做一件事情,只要盡力了,即使失敗了,你也不會后悔!

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              47 隨筆 :: 0 文章 :: 12 評論 :: 0 Trackbacks

            #

            使用協(xié)議UDP,僅實現(xiàn)簡單的連接功能:

            服務端:
            #pragma   comment(lib,   "ws2_32.lib ")

            #include <winsock2.h>
            #include <stdio.h>

            int main()
            {
             SOCKET socket1;
             WSADATA wsaData;


             int iErrorcode;
             if(WSAStartup(MAKEWORD(2,2), &wsaData))
             {
              printf("Winsock can not be init!");
              WSACleanup();
              return 0;
             }

             printf("server begin to create socket!\n");
             //struct sockaddr_in local;
             //struct sockaddr_in from;
             sockaddr_in local;
             sockaddr_in from;

             int fromlen = sizeof(from);

             local.sin_addr.s_addr = INADDR_ANY;
             local.sin_family =  AF_INET;
             local.sin_port = htons(5566);

             socket1 = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
             bind(socket1, (struct sockaddr *)&local, fromlen);
             
             while(1)
             {
              char buffer[1024] = "\0";

              printf("waiting message form client:");

              if(SOCKET_ERROR != recvfrom(socket1,
               buffer, sizeof(buffer), 0,
               (struct sockaddr *)&from, &fromlen))
              {
               if(strcmp(buffer, "bye") == 0)
               {
                printf("client quit!\n");
                break;
               }
               printf("recieve message form %s -- %s \n",
                inet_ntoa(from.sin_addr), buffer);
               sendto(socket1, buffer, sizeof(buffer),
                0, (struct sockaddr *)&from, fromlen);
              }
              
             }
             closesocket(socket1);

             return 0;
            }

            客戶端:
            #pragma   comment(lib,   "ws2_32.lib ")

            #include <winsock2.h>
            #include <stdio.h>

            int main()
            {
             SOCKET socket1;
             WSADATA wsaData;

             if(WSAStartup(MAKEWORD(2,2), &wsaData))
             {
              printf("can not init !\n");
              WSACleanup();
              return 0;
             }
             
             printf("client begin to create socket!\n");
             struct sockaddr_in server;
             int len = sizeof(server);

             server.sin_addr.s_addr = inet_addr("127.0.0.1");
             server.sin_port = htons(5566);
             server.sin_family = AF_INET;

             socket1 = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP );
             
             while(1)
             {
              char buffer[1024] = "\0";
              printf("input message: ");
              scanf("%s", buffer);
              if(strcmp(buffer, "bye") == 0)
              {
               sendto(socket1, "bye", 3 * sizeof(char), 0,
                (struct sockaddr *)&server, len);
               printf("exit!\n");
               Sleep(100);
               closesocket(socket1);
               break;
              }
              
              if(SOCKET_ERROR != sendto(socket1, buffer, sizeof(buffer),
               0, (sockaddr *)&server, len))
              {
               Sleep(100);
               if(recvfrom(socket1, buffer, sizeof(buffer), 0, (struct sockaddr *)&server, &len) != SOCKET_ERROR)
               {
                printf("recieve from server : %s \n", buffer);
               }
              }
              
             }
             closesocket(socket1);

             return 0;
            }

            posted @ 2010-05-15 21:12 張貴川 閱讀(673) | 評論 (0)編輯 收藏

            今早配置MYSQL,在WIN7中配置了一個早上,老是報1045的錯誤,說是MYSQL在WINDOWS中一直存在的錯誤,查了N多資料也不行,又不想重裝。
            看到一個解釋是這樣的:

            該錯誤只在Windows系統(tǒng)上出現(xiàn),Linux下好像好沒有,據(jù)說這個錯誤已經(jīng)存在n年了,有人extremely dispointedin  that it still exists here 2009!

            錯誤的原因更令人抓狂,那就是mysql server instance config wizard根本沒有為你設密碼,于是root密碼是空!實在不明白如果沒有為我設密碼那中間為什么叫我設個密碼。


            但他的方法我試了也沒用。
            問題還真的是千奇百怪。
            最后沒辦法點開instance config wizard 從頭來一遍,先把原來的配置卸載了,然后重新配置。最后竟然不報1045的錯誤了。網(wǎng)上很多都說要重裝才能解決問題,我看這方法和重裝沒啥區(qū)別,但比重裝省時間。
            真的是暈,看來要深入了解MYSQL的結構才能解釋為什么了,初玩姑且就算一種解決1045方法吧!

            posted @ 2010-05-08 10:56 張貴川 閱讀(111) | 評論 (0)編輯 收藏

            在  項目------添加類-----mfc------active x控件的MFC類----
            后面自己就知道怎么做了

            posted @ 2010-05-04 19:06 張貴川 閱讀(1320) | 評論 (0)編輯 收藏

               全局變量的定義:
            在MFC的框架中有個全局變量:
            CTestApp theApp;
            theApp是在進入WinMain函數(shù)之前就構造好值的。
            所以可以進入WinMain函數(shù)之前是先執(zhí)行theApp的構造函數(shù)。
            孫鑫老師說MFC是通過應用程序類的對象來標識應用程序的實例的(這句話不明白,應該都是hInstance標識的吧,也許要等到我看侯捷老師書的時候才知道了),且每個MFC程序有且僅有一個從CWinApp派生的類。也僅有一個CWinApp派生類的對象,即僅有一個theApp對象。theApp對象就標識了應用程序本身。
            即theApp是統(tǒng)領其它類的。
            并且CWinApp類是派生于CWinThread類的,
            There are two general types of threads that CWinThread supports: worker threads and user-interface threads. Worker threads have no message pump: for example, a thread that performs background calculations in a spreadsheet application. User-interface threads have a message pump and process messages received from the system. CWinApp and classes derived from it are examples of user-interface threads. Other user-interface threads can also be derived directly from CWinThread.

            MSDN中還提供了一些額外的操作全局信息的函數(shù):

          1. AfxGetApp   Obtains a pointer to the CWinApp object.

          2. AfxGetInstanceHandle   Obtains a handle to the current application instance.

          3. AfxGetResourceHandle   Obtains a handle to the application's resources.

          4. AfxGetAppName   Obtains a pointer to a string containing the application's name. Alternately, if you have a pointer to the CWinApp object, use m_pszExeName to get the application's name.

            看看MFC中的 main()函數(shù):
            extern "C" int WINAPI
            _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
             _In_ LPTSTR lpCmdLine, int nCmdShow)
            #pragma warning(suppress: 4985)
            {
             // call shared/exported WinMain
             return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
            }

          5. posted @ 2010-05-01 20:59 張貴川 閱讀(424) | 評論 (1)編輯 收藏

            晚上搞了半天才發(fā)現(xiàn):原來類模板不能分文件寫!
            如:
            template <class Type>
            class TNumber
            {
            public:
             ~TNumber()
             {
             }

             void SetItem(Type);
             Type GetItem();
            private:
             Type m_item;
            };

            寫到casual.h中f。而實現(xiàn)文件寫入casual.cpp中,那么在main文件中調(diào)用時就會提示外部命令無法解析的錯誤。
            如:
            1>main.obj : error LNK2019: 無法解析的外部符號 "public: int __thiscall TNumber<int>::GetItem(void)" (?GetItem@?$TNumber@H@@QAEHXZ),該符號在函數(shù) _main 中被引用

            看到一個解釋是:
            因為模板類在編譯的時候就相當于宏定義,分兩個文件是找不到的。

            解決辦法可以:
            1.類模板定義和實現(xiàn)在同一文件。
            2.在main文件中連續(xù)包含定義文件和實現(xiàn)文件.
            #include "casual.h"
            #include "casual.cpp"

            int main()
            {

             TNumber<int> obj1;

             cout << obj1.GetItem() << endl;

               return 0;
            }

            posted @ 2010-04-22 01:01 張貴川 閱讀(2755) | 評論 (7)編輯 收藏

            先解釋const 的記憶問題:
            比如: 
            type  const * p;  
             * p 是表示對象, const 修飾 *p ,  就表示常對象。即 *p  對象不可改變。 所以  p  不是 常指針,是指向常量的指針。
            相對于:const type * const * p; 的寫法,個人推薦前一種。

            而:
            type  * const p;
            const 修飾 p, 所以 p  是常量,而* const p 即代表指針常量.   p 是常指針。


            所以
             int * & func(C &oC)
             {
              return oC.m_p;
             }
            表示返回指針的引用

            但沒有:
             int & * func(C &oC)
             {
              return oC.m_p;
             }

            編譯器會把 int & *  中的 & 看作取地址符號。
            如果要對  int  型變量進行應用,為沒必要這樣
            可以這樣寫:
             int  & func(C &oC)
             {
              return  *oC.m_p;
             }

            同樣記憶:
            常引用對象: type const & Ref ;
            還要注意const 修飾函數(shù)只能是  類成員函數(shù),而不能是全局函數(shù)

            posted @ 2010-04-16 20:49 張貴川 閱讀(253) | 評論 (0)編輯 收藏

            class CBase
            {
            public:
             CBase(int iNum) : m_iNumber(iNum)
             {

             }
             CBase(CBase & oBase)
             {
              
             }
            protected:
             int m_iNumber;
            };
            class B : public CBase
            {
            public:
             B(int iNum, int iNum2) : CBase(iNum), m_iNumber2(iNum2)
             {
             }
             
             B(B & oB) : CBase(oB.m_iNumber)
             {
              m_iNumber2 = oB.m_iNumber2;
             }

             void show()
             {
              cout << m_iNumber <<  "  " << m_iNumber2 << endl;
             }

            private:
             int m_iNumber2;
            };

            如果沒有 B中的 拷貝構造函數(shù)   B(B & oB) : CBase(oB.m_iNumber) 后面的初始化CBase(oB.m_iNumber)則會報這樣的錯誤:
             error C2512: “CBase”: 沒有合適的默認構造函數(shù)可用

            當然以下這樣初始化更符合 都是  拷貝構造函數(shù)的邏輯:
            B(B & oB) : CBase(&oB) 


            posted @ 2010-04-16 20:08 張貴川 閱讀(1375) | 評論 (0)編輯 收藏

            僅列出標題
            共5頁: 1 2 3 4 5 
            久久精品国产亚洲AV忘忧草18| 成人久久精品一区二区三区| 久久久久久人妻无码| 精品免费久久久久国产一区| 色狠狠久久AV五月综合| 久久精品三级视频| 久久国产精品99精品国产| 伊人精品久久久久7777| 日韩精品久久久久久| 日韩精品久久久肉伦网站| 亚洲欧美精品一区久久中文字幕| 99热成人精品热久久669| 久久久久久国产精品美女| 国产精品成人99久久久久91gav| 亚洲精品国精品久久99热一| 亚洲午夜无码久久久久小说| 99久久国产热无码精品免费久久久久| 人妻丰满AV无码久久不卡| 狠狠色丁香婷婷久久综合五月| 国产精品免费久久久久影院| 精品久久香蕉国产线看观看亚洲| 伊人久久大香线蕉综合影院首页 | 日本道色综合久久影院| 色婷婷综合久久久久中文 | 色8激情欧美成人久久综合电| 久久最近最新中文字幕大全| www.久久热.com| 97久久久精品综合88久久| 久久精品国产亚洲av影院| 久久久久久国产精品免费无码| 国产成人精品综合久久久久| 狠狠色丁香久久婷婷综合图片 | 人妻精品久久无码区| 日韩精品久久久久久久电影蜜臀| 99久久精品免费看国产一区二区三区 | 青草影院天堂男人久久| 伊人久久综在合线亚洲2019| 91精品国产高清久久久久久国产嫩草 | 中文国产成人精品久久不卡| 久久人人爽人人爽人人片av麻烦| 亚洲七七久久精品中文国产 |