TCP.h
资源名称:视频会议系统.rar [点击查看]
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:2k
源码类别:
IP电话/视频会议
开发平台:
Visual C++
- // TCP.h: interface for the CTCP class.
- //
- //////////////////////////////////////////////////////////////////////
- #ifndef __TCP_H__
- #define __TCP_H__
- #include "winsock2.h"
- #include "Buffer.h"
- #include "Thread.h"
- #define MAX_IP_SIZE 100
- class CTCP
- {
- public:
- CTCP();
- virtual ~CTCP();
- //取得本机的IP
- static char * GetIPAddressFromHostName( void );
- char * GetPeerName( void );
- char * GetSockName( void );
- //用户子定义参数
- void SetData( int data ){ user_data = data ; }
- //取得用户子定义参数
- int GetData( void ){ return user_data; }
- //创建服务器
- bool Create( void ( * OnAccept )( void *pContext , CTCP & server ) , void * pContext , const int port );
- //接收连接
- bool Accept( CTCP * client );
- //连接服务器
- bool Connect( const char * ip , const port );
- //是否监听
- bool IsListen( void ) { return this->s_listen != INVALID_SOCKET ; }
- //是否连接
- bool IsConnected( void );
- //发送
- bool Send( CBuffer & buffer );
- //接收
- bool Receive( CBuffer & buffer , struct timeval * timeout = NULL );
- //添加到访问链表
- void AddVisitList( void ){ this->visit ++; }
- //从访问链表中移去
- void RemoveVisitList( void ){ this->visit --; }
- //是否还在被他人访问
- bool IsVisit( void ) { return this->visit > 0 ; }
- //关闭连接
- void Close( void );
- protected:
- static void OnAccept( void * pContext );
- private:
- //转给坚听线程的指针信息
- class CInfo
- {
- public:
- CInfo( void ( * Func )( void *pContext , CTCP & server ) , void * p , void * pThis )
- {
- this->OnAccept = Func; this->pContext = p ; this->pThis = (CTCP * )pThis ;
- }//本类指针
- CTCP * pThis;
- //回调函数
- void ( * OnAccept )( void *pContext , CTCP & server ) ;
- //回调函数的用户自定义参数
- void * pContext;
- };//把单个字节组合成一个整型
- union BYTE_INT_UNION
- {
- struct
- {
- BYTE a;
- BYTE b;
- BYTE c;
- BYTE d;
- }B;
- int iValue;
- };
- //坚听socket
- SOCKET s_listen;
- //连接上来的socket数组
- SOCKET connect_socket;
- //引用次数
- static int InitTCPNumber;
- //用户自定义参数
- int user_data;
- //线程访问次数
- int visit;
- //发送临界区
- CRITICAL_SECTION session;
- };
- #endif