亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cconnection.h

?? wince 下網(wǎng)絡(luò)通訊類
?? H
字號(hào):
/******************************************************************************
* Copyright (c) 2009 xxx Electronics, Inc.
* All rights reserved.
*-----------------------------------------------------------------------------
* Description:
*     CConection     class  連接處理
*	  CError         class  錯(cuò)誤處理
*     CNetworking    class  端口監(jiān)聽以及遠(yuǎn)程計(jì)算機(jī)信息獲取
*     CSync          class  線程同步處理
*     CThreadManager class  線程創(chuàng)建、線程狀態(tài)監(jiān)控、線程釋放
*
* Change History:
*  04/26/2009          Chen Jian          添加注釋、修正線程泄漏問(wèn)題、添加錯(cuò)誤處理
*
* Comments: 支持多個(gè)連接通訊
*
******************************************************************************/

#ifndef CCONNECTION_H
#define CCONNECTION_H

#include <winsock.h>
#include <stdio.h>
#include "afx.h"


typedef void ( *CALLBACKFUNC ) ( DWORD ptr );

class  CThreadManager
{

public:

protected:

private:
};



class CSync
{
    /*CreateMutex Handle*/
    HANDLE		m_sync;

public:
    CSync ();
    ~CSync ();

    CSync ( CSync& s );
    CSync& operator= ( CSync& s );
    /*********************************************************************
    Lock thread
    *********************************************************************/
    void Lock () const;
    /*********************************************************************
    UnLock thread
    *********************************************************************/
    void UnLock () const;
};


class CError
{

    CError ( );

    friend class CNetworking;

    friend class CConnection;

    friend class CSync;

public:

    static void GetErrorString ( long lCode );
};



class CNetworking
{

public:

    /*********************************************************************
    網(wǎng)絡(luò)連接的管理
    *********************************************************************/

    class CConnectionList
    {

        class Node
        {

        public:
            CConnection*	m_con;
            Node*			m_next;

            Node ();
        };

        Node*		m_first;
        Node*		m_last;
        /*Connection Count*/
        int			m_length;

    public:
        CConnectionList ();
        ~CConnectionList ();
        /*********************************************************************
        添加一個(gè)連接到list
        @param[in]     Connection類指針
        *********************************************************************/
        void			Add ( CConnection* con );
        /*********************************************************************
        返回第一個(gè)接收到線程的CConnection*并從隊(duì)列中刪除,CConnection類分配空間返回由外部釋放
        @return        CConnection*  if success, else null error code
        *********************************************************************/
        CConnection*	Remove ();
        /*********************************************************************
        返回指定接收到線程的CConnection*并從隊(duì)列中刪除,CConnection類分配空間返回由外部釋放
        @param[in]     索引號(hào)
        @return        CConnection*  if success, else null error code
        *********************************************************************/
        CConnection*	Remove ( int i );
        /*********************************************************************
        返回指定索引號(hào)連接對(duì)象指針
        @param[in]     索引號(hào)
        @return        CConnection*  if success, else null error code
        *********************************************************************/
        CConnection*	Item ( int i );
        CConnection*	operator [] ( int i );
        /*********************************************************************
        返回連接數(shù)
        @return        long  >=0 if success, else error code
        *********************************************************************/
        long			Length ();
    };

private:
    static long		m_count;

    CSync			m_sync;
    CConnectionList	m_accepted;

    SOCKET			m_socket;
    sockaddr_in		m_addr;
    /*連接被接收時(shí)觸發(fā)事件*/
    HANDLE			m_hAcceptEvent;
    /*連接被接收時(shí)觸發(fā)callback*/
    CALLBACKFUNC	m_hAcceptFunc;
    /*Accept thread handle*/
    HANDLE			m_hAcceptThread;
    /*Thread ID*/
    DWORD			m_dwAcceptThreadID;

    CError			m_lasterror;

    int AcceptWait ();
    static int AcceptThread ( void* pThis );

    friend class CConnection;

public:
    CNetworking ();
    ~CNetworking ();
    /*********************************************************************
    監(jiān)聽指定端口
    @param[in]     int 端口號(hào)
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    bool			Listen ( int port );
    /*********************************************************************
    停止監(jiān)聽
    *********************************************************************/
    void			StopListen ();
    /*********************************************************************
    返回第一個(gè)接收到線程的CConnection*并從隊(duì)列中刪除,CConnection類分配空間返回由外部釋放
    @return        CConnection* if success, else NULL error code
    *********************************************************************/
    CConnection*	GetAccepted ();
    /*********************************************************************
    設(shè)置接收連接時(shí)觸發(fā)的事件
    @param[in]     HANDLE
    *********************************************************************/
    void			SetAcceptEvent ( HANDLE hEvent );
    /*********************************************************************
    設(shè)置連接接收時(shí)觸發(fā)的 callbackfun
    @param[in]     函數(shù)指針
    *********************************************************************/
    void			SetAcceptFunc ( CALLBACKFUNC hFunc );
    /*********************************************************************
    返回已接收的連接數(shù)
    @return        BOOL >=0 if success, else error code
    *********************************************************************/
    int				HasAccepted ();
    /*********************************************************************
    是否監(jiān)聽
    @return        BOOL TRUE if Listening
    *********************************************************************/
    bool			IsListening ();
    /*********************************************************************
    獲取本地計(jì)算機(jī)名
    @param[out]     計(jì)算機(jī)名數(shù)組
    @param[in]     字符串?dāng)?shù)組大小
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    bool			GetLocalName ( char *localname, int len );
    /*********************************************************************
    取得本地IP地址
    @param[out]     計(jì)算機(jī)名數(shù)組
    @param[in]     字符串?dāng)?shù)組大小
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    bool			GetLocalIP ( char *localip, int len );
    /*********************************************************************
    獲取本地所有IP地址,多個(gè)IP地址由換行符分割
    @param[out]     計(jì)算機(jī)名數(shù)組
    @param[in]     字符串?dāng)?shù)組大小
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    bool			GetLocalIPs ( char *localips, int len );
    /*********************************************************************
    通過(guò)查找IP獲得遠(yuǎn)端計(jì)算機(jī)名稱
    @param[in]     計(jì)算機(jī)IP數(shù)組
    @param[out]    計(jì)算機(jī)名數(shù)組
    @param[in]     字符串?dāng)?shù)組大小
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    bool			ResolveName ( char *hostip, char *hostname, int len );
    /*********************************************************************
    通過(guò)查找遠(yuǎn)端計(jì)算機(jī)名獲得IP
    @param[in]     計(jì)算機(jī)名數(shù)組
    @param[out]    計(jì)算機(jī)IP數(shù)組
    @param[in]     字符串?dāng)?shù)組大小
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    bool			ResolveIP ( char *hostname, char *hostip, int len );
    /*********************************************************************
    獲取遠(yuǎn)程所有IP地址,多個(gè)IP地址由換行符分割
    @param[in]     日志路徑+日志文件名(擴(kuò)展名由程序追加)
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    bool			ResolveIPs ( char *hostname, char *hostips, int len );
    /*********************************************************************
    獲取所有鏈接到lan的計(jì)算機(jī)名,多個(gè)計(jì)算機(jī)名由換行符分割
       @param[out]     計(jì)算機(jī)名數(shù)組
    @param[in]     字符串?dāng)?shù)組大小
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
};


class CConnection
{

    class CDataStack
    {
        char*		m_buffer;
        long		m_length;
        CSync		m_sync;

    public:
        CDataStack ();
        ~CDataStack ();
        void Append ( const char* data, int len );
        int Remove ( char* data, int len );
        int Length ();
    };


    static long		m_count;

    HANDLE			m_event;
    CSync			m_sync;
    CDataStack		m_data;

    SOCKET			m_socket;
    sockaddr_in		m_addr;

    HANDLE			m_hRecvEvent;
    CALLBACKFUNC	m_hRecvFunc;
    HANDLE			m_hCloseEvent;
    CALLBACKFUNC	m_hCloseFunc;

    HANDLE			m_hRecvThread;
    DWORD			m_dwRecvThreadID;

    int RecvWait ();
    static int RecvThread ( void* pThis );

    friend class CNetworking;

public:
    CHistory		m_His;


    CConnection ();
    CConnection ( const char* host, unsigned short port );
    ~CConnection ();
    /*********************************************************************
    連接指定計(jì)算機(jī)
    @param[in]     ip
    @param[in]     port
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    bool	Connect ( const char* host, unsigned short port );
    /*********************************************************************
    終端連接
     *********************************************************************/
    void	Disconnect ();
    /*********************************************************************
    獲得連接計(jì)算機(jī)信息
    @param[out]     計(jì)算機(jī)IP數(shù)組
    @param[in]     字符串大小
    @param[out]    遠(yuǎn)程端口
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    bool	PeerInfo ( char* host, int host_len, unsigned int* port );
    /*********************************************************************
    發(fā)送數(shù)據(jù)到連接計(jì)算機(jī)
    @param[in]     send buffer
    @param[in]     buffer size
    @return        int send size
    *********************************************************************/
    int		Send ( const char* buffer, int bufferlen );
    /*********************************************************************
    接收監(jiān)聽端口第一次獲得的數(shù)據(jù)
    @param[out]     buffer
    @param[in]     buffer size
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    int		Receive ( char* buffer, int bufferlen );
    /*********************************************************************
    設(shè)置接收到達(dá)時(shí)觸發(fā)的事件
    @param[in]     事件
    *********************************************************************/
    void	SetReceiveEvent ( HANDLE hEvent );
    /*********************************************************************
    設(shè)置接收到達(dá)時(shí)觸發(fā)的 callbackfun
    @param[in]     函數(shù)指針
    *********************************************************************/
    void	SetReceiveFunc ( CALLBACKFUNC hFunc );
    /*********************************************************************
    設(shè)置關(guān)閉時(shí)處理的事件
    @param[in]     事件
    *********************************************************************/
    void	SetCloseEvent ( HANDLE hEvent );
    /*********************************************************************
    設(shè)置關(guān)閉連接時(shí)觸發(fā)的 callbackfun
    @param[in]     函數(shù)指針
    @return        BOOL TRUE if success, else error code
    *********************************************************************/
    void	SetCloseFunc ( CALLBACKFUNC hFunc );
    /*********************************************************************
    是否連接
    @return        BOOL TRUE is Connect
    *********************************************************************/
    bool	IsConnected ();
    /*********************************************************************
    返回接收到的字節(jié)
    @return        int > 0 is success, else error code
    *********************************************************************/
    int		HasReceived ();
};

#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区在线观看免费| 91精彩视频在线观看| caoporm超碰国产精品| 欧美日韩电影在线播放| 国产精品视频一二三区| 亚洲男人的天堂一区二区| 久久精品国产精品亚洲精品 | 黄页视频在线91| 一区二区三区在线视频播放| 天堂成人免费av电影一区| 国产尤物一区二区在线| 一本在线高清不卡dvd| 欧美一区二区三区啪啪| 中文字幕免费观看一区| 日韩国产一二三区| 久久国产夜色精品鲁鲁99| 99久久精品国产导航| 欧美天堂一区二区三区| 国产精品女同一区二区三区| 国产精品不卡一区| 国内精品不卡在线| 国产精品久久久久aaaa| 国产精品毛片a∨一区二区三区| 亚洲一区二区视频在线| 国产成a人亚洲| 日韩欧美在线影院| 国产精品每日更新| 日韩激情视频在线观看| 成a人片国产精品| 欧美一区二区免费视频| 亚洲欧美国产三级| 国产美女精品在线| 制服丝袜日韩国产| 一色屋精品亚洲香蕉网站| 青娱乐精品视频| 在线不卡欧美精品一区二区三区| 国产精品久久久久婷婷| 国产一区二区三区免费播放 | 91精品国产综合久久久久| 亚洲少妇30p| 粉嫩蜜臀av国产精品网站| 欧美精品一区二区在线观看| 午夜精品视频在线观看| 色婷婷综合久久| 亚洲你懂的在线视频| 成人app网站| 国产欧美日韩综合| 国产成人免费在线视频| 亚洲精品一区二区三区四区高清| 亚洲123区在线观看| 欧美性猛交xxxx黑人交| 亚洲一区二区在线免费观看视频 | 日韩精品专区在线影院重磅| 一区二区视频在线| 92国产精品观看| 国产精品国产三级国产aⅴ中文| 成人免费毛片嘿嘿连载视频| 欧美韩国日本一区| 91丨porny丨中文| 亚洲精品网站在线观看| 欧美日韩国产区一| 日韩成人精品视频| 精品国产一区二区三区久久久蜜月| 蜜桃久久久久久久| www成人在线观看| 国产999精品久久久久久绿帽| 国产精品色在线| 色婷婷综合在线| 日韩综合一区二区| 欧美本精品男人aⅴ天堂| 精品亚洲欧美一区| 国产精品美女久久久久aⅴ| 91首页免费视频| 五月婷婷色综合| 久久亚洲综合色| 色综合久久天天| 视频一区二区欧美| 久久久不卡网国产精品一区| 91在线观看高清| 日本成人在线看| 欧美国产禁国产网站cc| 在线视频综合导航| 美女看a上一区| 中文字幕的久久| 色综合一区二区| 日韩影院免费视频| 久久久久久一二三区| 欧美性一级生活| 日韩精品一二三四| 国产精品免费丝袜| 在线不卡一区二区| 99这里都是精品| 另类中文字幕网| 亚洲人成影院在线观看| 精品国产区一区| 99re热视频这里只精品| 久久精品99国产精品| 亚洲人午夜精品天堂一二香蕉| 日韩欧美中文字幕精品| 91蜜桃网址入口| 精品亚洲免费视频| 一区二区三区资源| 国产人成亚洲第一网站在线播放 | 国产精品久久夜| 精品一区二区在线看| 国产精品理论在线观看| 91精品国产入口在线| 国产xxx精品视频大全| 亚洲18色成人| 亚洲黄色av一区| 国产精品嫩草影院com| 日韩欧美国产综合一区| 欧美性猛交一区二区三区精品| 青娱乐精品视频| 欧美激情一区二区三区在线| 欧美精品丝袜中出| 色婷婷久久久亚洲一区二区三区 | 日韩成人精品在线观看| 中文字幕视频一区| 久久久一区二区三区捆绑**| 欧美一区二区三区在| 在线免费观看日韩欧美| 播五月开心婷婷综合| 国产在线一区观看| 日韩成人精品在线观看| 亚洲一区视频在线观看视频| 国产精品你懂的在线欣赏| 欧美精品123区| 欧美美女视频在线观看| 欧美日韩电影在线播放| 欧美午夜精品一区二区三区| 色婷婷精品大在线视频| 色综合久久久久久久久| 97se亚洲国产综合自在线观| 99久久精品免费看| 色噜噜狠狠一区二区三区果冻| 99精品久久久久久| 99国产精品久久久久久久久久| 欧美aaa在线| 久久99精品国产麻豆婷婷| 免费观看91视频大全| 麻豆传媒一区二区三区| 久久99精品久久久久久动态图 | 国产一区在线不卡| 成人免费毛片高清视频| 成人免费视频app| 99久久久久久99| 色菇凉天天综合网| 欧美日韩精品一区二区三区四区| 欧美群妇大交群的观看方式| 欧美性大战久久久久久久| 欧美三级日韩三级国产三级| caoporm超碰国产精品| 色婷婷久久久亚洲一区二区三区| 欧洲av在线精品| 制服丝袜激情欧洲亚洲| 日韩情涩欧美日韩视频| 亚洲精品在线免费播放| 欧美极品美女视频| 亚洲免费观看视频| 亚洲成a人v欧美综合天堂| 理论片日本一区| 美女视频黄久久| 高清免费成人av| 91丨国产丨九色丨pron| 91视频观看免费| 91精品国产一区二区三区蜜臀| 精品99一区二区三区| 亚洲欧洲三级电影| 日韩精品国产精品| 懂色av一区二区三区蜜臀| 欧洲精品在线观看| 久久久亚洲高清| 一区二区三区四区精品在线视频| 丝袜国产日韩另类美女| 免费av成人在线| 成人网在线免费视频| 欧美性猛片aaaaaaa做受| 久久综合久色欧美综合狠狠| 一区在线中文字幕| 亚洲v日本v欧美v久久精品| 国产精品77777| 精品视频在线免费观看| 国产午夜精品一区二区三区四区| 亚洲国产欧美另类丝袜| 国产成人自拍网| 欧美一卡二卡在线| 亚洲美女精品一区| 国产91精品精华液一区二区三区| 欧美日韩高清影院| 亚洲日本乱码在线观看| 国产乱码精品一区二区三区忘忧草 | 欧美日韩精品是欧美日韩精品| 亚洲精品一区二区精华| 亚洲成人黄色小说| 97久久精品人人做人人爽| 久久久久国产一区二区三区四区| 亚洲丰满少妇videoshd| www.99精品| 中文字幕精品在线不卡|