• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 軟件測試線程池的編碼實現[2]

    發表于:2009-09-15來源:作者:點擊數: 標簽:軟件測試線程編碼
    軟件測試線程池的編碼實現[2] 軟件測試工具 關鍵字: 數據庫 設計 @param void *——未使用 @return void——無 */ void ProcessRequest(void *) { SOCKET *pSock; while (pSock = MsgQueue_Recv(g_pQue)) { int len; char buf[1024]; len = recv(*pSock,

    軟件測試線程池的編碼實現[2]    軟件測試工具

    關鍵字:數據庫設計  @param  void *——未使用 
                @return  void——無   
        */
        void ProcessRequest(void *)
        {
                SOCKET *pSock;
                while (pSock = MsgQueue_Recv(g_pQue))
                {
                       int  len;
                       char buf[1024];
                       len = recv(*pSock, buf, sizeof(buf)-1, 0);
                       if ( len > 0 )
                       {
                               buf[len] = '\0';
                               if ( strcmp(buf, "Hello!")== 0 )
                               {
                                       strcpy(buf, "Ok");
                                       send(*pSock, buf, strlen(buf), 0);
                               }
                       }
                }
        }

        可以看出,使用了消息隊列后,整個線程池調度非常簡單,由于本書中實現的消息隊列在進行遍歷時不會影響收發,因此可以實時查看有多少客戶在線,使用消息隊列的以下調用函數便可以實現對整個消息隊列的遍歷。

        INT MsgQueue_EnumNext(MSGQUEUE *pQueue, VISITFUNC VisitFunc);

        這里只需要寫一個訪問函數VisitFunc即可,比如要想將當前所有在線的客戶端連接SOCKET ID打印到圖形界面中,可以寫一個簡單的訪問函數來實現,編碼如下。
        INT PrintAllIDToScreen(void *pData)
        {
                SOCKET *pSock = pData;
        WriteToScreen(*pSock);   /* WriteToScreen是將數據寫到圖形界面的函數 */
        }

        再調用“MsgQueue_EnumNext(g_pQue, PrintAllIPToScreen)”語句就可以實現遍歷。

        需要注意的是,上面的編碼只是在消息隊列中放入了一個SOCKET ID,在程序中可以定義一個結構體,結構體中可以包含SOCKET ID、客戶端IP地址、連接建立時間等各種信息,然后將結構體發送到消息隊列即可。這樣遍歷的時候就可以看到客戶端IP地址、連接建立的時間等更多的信息了。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>