• <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>

            Jiwu Bu

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              32 隨筆 :: 0 文章 :: 25 評論 :: 0 Trackbacks
            轉(zhuǎn)載請注明出處!
            上篇五子棋<一>
            http://www.shnenglu.com/bujiwu/archive/2009/08/23/94199.html

            主要實現(xiàn)了五子棋的界面與下棋業(yè)務(wù)流程。
            這二天實現(xiàn)了以下計劃中的第一點,完成了網(wǎng)絡(luò)對戰(zhàn)功能,并實現(xiàn)了網(wǎng)絡(luò)悔棋。
            1、網(wǎng)絡(luò)對戰(zhàn)功能(包括GameClient與GameServer類,可以了解Socket編程)。
            2、人機對戰(zhàn)功能(目前還沒有好的思路)。

            由于五子棋服務(wù)端與客戶端通訊比較簡單,所以只用最簡單的網(wǎng)絡(luò)通訊模式(沒有使用IOCP)。定義網(wǎng)絡(luò)通訊抽象基類CBaseSocket。
             1 typedef void (* RECVFUNC)(char *pMsg, int len);
             2 
             3 class CBaseSocket
             4 {
             5 public:
             6     CBaseSocket();
             7     virtual ~CBaseSocket();
             8 
             9     virtual bool SendPacket(void* pMsg, int len) = 0;
            10     virtual bool Initialize(int Port, char* pAddress) = 0;
            11    
            12 protected:
            13     bool InitWinSock();
            14 
            15 protected:
            16     SOCKET hSocket;
            17     static RECVFUNC pRecv;
            18 };

            客戶端類CGameClient與CGameServer類繼承CBaseSocket基類。并實現(xiàn)bool SendPacket(void* pMsg, int len) 與 bool Initialize(int Port, char* pAddress) 純虛函數(shù)。由于CGameClient與CGameServer都繼承CBaseSocket,所以可以通過多態(tài)的實例化具體的客戶端類或服務(wù)端類。 如下:

             1 定義:
             2 CBaseSocket *pSocket = NULL;
             3 
             4 if(IsDlgButtonChecked(hDlg, IDC_RADI_HOST))
             5 {
             6     pSocket = new CGameServer(RecvPktCallBack);
             7     gMode = SERVER_MODE;
             8     EnableWindow( GetDlgItem(hDlg, IDOK), FALSE);
             9 }
            10 else
            11 {
            12     pSocket = new CGameClient(RecvPktCallBack);
            13     gMode = CLIENT_MODE;
            14     GetDlgItemText(hDlg, IDC_EDIT_IP, pAddress, sizeof(pAddress) );
            15 }

            服務(wù)端類當(dāng)accept客戶端就壓入到vector,主要是為了以后支持網(wǎng)絡(luò)模式下可以觀棋的客戶端連接。
             1 class CGameServer:public CBaseSocket
             2 {
             3 public:
             4     CGameServer(RECVFUNC pRecv);
             5     ~CGameServer();
             6 
             7     bool SendPacket(void* pMsg, int len);
             8     bool Initialize(int Port, char* pAddress);
             9 
            10 private:
            11     static DWORD WINAPI RecvThread(LPVOID lpPara);
            12     static DWORD WINAPI AcceptThread(LPVOID lpPara);
            13 
            14 private:
            15     static vector<SOCKET> ClientVec;
            16 };

            其它就是打包、解包的工作了。


            代碼:
            /Files/bujiwu/Gobang.rar

            posted on 2009-08-27 21:32 bujiwu 閱讀(1793) 評論(0)  編輯 收藏 引用 所屬分類: C++
            AV无码久久久久不卡网站下载| 久久午夜无码鲁丝片秋霞| 久久777国产线看观看精品| 国产精品久久波多野结衣| 国产免费久久精品99久久| 亚洲精品无码专区久久久| 香港aa三级久久三级| 中文字幕无码精品亚洲资源网久久| 99久久超碰中文字幕伊人| 伊人伊成久久人综合网777| 精品久久无码中文字幕| 欧美日韩精品久久免费| 国产精品99久久精品爆乳| 亚洲人成网亚洲欧洲无码久久| 国产精品狼人久久久久影院 | 国产精品99久久久久久www| 亚洲综合伊人久久综合| 久久亚洲AV无码西西人体| 丁香狠狠色婷婷久久综合| 亚洲精品无码久久久久去q| 久久中文字幕视频、最近更新| 国产国产成人精品久久| 亚洲国产精品无码久久久不卡| 久久综合一区二区无码| 久久国产香蕉一区精品| 99精品久久精品| 久久国产亚洲高清观看| 久久国产热精品波多野结衣AV| 亚洲色欲久久久综合网| 中文精品久久久久人妻不卡| 无码任你躁久久久久久老妇App| 久久久无码精品亚洲日韩软件| 久久99精品久久久久久噜噜| 国产精品久久国产精品99盘 | 精品久久人人做人人爽综合| 国产精品久久久久天天影视| 久久99国内精品自在现线| 狠狠88综合久久久久综合网| 久久66热人妻偷产精品9| 99re久久精品国产首页2020| 久久99精品国产99久久6男男|