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

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

?? socket.h

?? 一套linux下的C++開發(fā)庫
?? H
字號:
/***************************************************************************                          socket.h  -  description                             -------------------    begin                : Fri Jul 20 2001    copyright            : (C) 2001 by Mark    email                : alben@yeah.net ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/#ifndef SOCKET_H#define SOCKET_H#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/un.h>#include <arpa/inet.h>#include <netdb.h>#include <sys/time.h>#include <sys/types.h>#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <tinycxx/exception.h>#include <tinycxx/stream.h>typedef unsigned short int tcport_t;class CInetAddress{protected:	struct in_addr m_stInetAddr;public:	CInetAddress();	CInetAddress(const struct in_addr& stInetAddr);	CInetAddress(const char* sInetAddr);	inline struct in_addr GetAddress() const { return m_stInetAddr; }	bool IsInetAddress() const;	CInetAddress& operator = (const struct in_addr& stInetAddr);		CInetAddress& operator = (const char* sInetAddr);};class CUnixAddress{protected:	enum { PATH_LEN_LIMIT = 99, };	char m_sPath[PATH_LEN_LIMIT+1];	public:	CUnixAddress() { strcpy(m_sPath, ""); }	CUnixAddress(const char* sPath)			{				strncpy(m_sPath, sPath, PATH_LEN_LIMIT);				m_sPath[PATH_LEN_LIMIT] = 0;			}	CUnixAddress& operator = (const char* sPath)			{				strncpy(m_sPath, sPath, PATH_LEN_LIMIT);				m_sPath[PATH_LEN_LIMIT] = 0;				return *this;			}	const char* path() const { return m_sPath; }	bool IsUnixAddress() const { return m_sPath[0]; }};class CSocket{protected:	enum CState	{		S_INITIAL,		S_AVAILABLE,		S_BOUND,		S_CONNECTED,		S_CONNECTING	};	protected:	int m_iSocket;	int m_iDomain;	CState m_eState;	bool m_bBlock;	public:	int SocketFd() { return m_iSocket; }	void SetBlock(bool bBlock);protected:	CSocket();	CSocket(const CSocket* pstSocket);	CSocket(int iDomain, int iType, int iProtocol = 0);	virtual ~CSocket() { End(); }	void End();	void Bind(const CInetAddress& stInetAddr, tcport_t tPort);	void Bind(const CUnixAddress& stUnixAddr);	private:	void Init();	inline void Socket(int iDomain, int iType, int iProtocol = 0)			{				if ((m_iSocket = socket(iDomain, iType, iProtocol)) < 0)					throw CSocketException(strerror(errno), __FILE__, __LINE__);			}};class CTcpStream;class CTcpSocket : public CSocket{protected:	// return false will close new connected socket	virtual bool OnAccept(const CInetAddress& stInetAddr, tcport_t tPort)			{ return true; }		virtual bool OnAccept(const CUnixAddress& stUnixAddr)			{ return true; }					virtual bool OnCheckOpenIntr() { return true; }	virtual bool OnAcceptIntr() { return true; }			public:	CTcpSocket() {}	CTcpSocket(const CSocket* pstSocket);	//bind ...	CTcpSocket(const CInetAddress& stInetAddr, tcport_t tPort);	CTcpSocket(const CUnixAddress& stUnixAddr);		virtual ~CTcpSocket() {}	//open as server to listen ...	void Open(int iBackLog = 5);		//open as client to connect ...	//if EINPROGRESS or EINTR error occurs return false	//if other error occurs throw exception	//else return true	bool Open(const CInetAddress& stInetAddr, tcport_t tPort);	bool Open(const CUnixAddress& stUnixAddr);			//if open with return value false should call this function to check if already opened	//if not connected return false	//if error occurs throw exception	//if connected return true	bool CheckOpen(long lSec, long lUSec = 0);	//accept incomming connections ...	bool Accept(CTcpStream* pstTcpStream);	private:	void Listen(int iBackLog = 5);};class CTcpStream : public CTcpSocket, public CStream{	friend class CTcpSocket;	public:	CTcpStream(int iBufSize = 512);	CTcpStream(const CSocket* pstSocket, int iBufSize = 512);	CTcpStream(const CInetAddress& stInetAddr, tcport_t tPort, int iBufSize = 512);	CTcpStream(const CUnixAddress& stUnixAddr, int iBufSize = 512);	virtual ~CTcpStream() { flush(); }	virtual int overflow(int ch);	virtual int underflow();	protected:	virtual bool OnWriteIntr() { return true; }	virtual bool OnReadIntr() { return true; }};class CUdpSocket : public CSocket{protected:	bool m_bConnected;	CInetAddress m_stInetAddr;	tcport_t m_tPort;	//host byte order	CUnixAddress m_stUnixAddr;public:	CUdpSocket(int iDomain = PF_INET) : CSocket(iDomain, SOCK_DGRAM)  { m_bConnected = false;  m_tPort = 0; }	CUdpSocket(const CInetAddress& stInetAddr, tcport_t tPort);	CUdpSocket(const CUnixAddress& stUnixAddr);	virtual ~CUdpSocket() { }		void Connect(const CInetAddress& stInetAddr, tcport_t tPort);	void Connect(const CUnixAddress& stUnixAddr);	void Disconnect();	int Read(void* pMsg, int iLen);	int Read(void* pMsg, int iLen, CInetAddress& stInetAddr, tcport_t& tPort);	int Read(void* pMsg, int iLen, CUnixAddress& stUnixAddr);	int Write(const void* pMsg, int iLen);	int Write(const void* pMsg, int iLen, const CInetAddress& stInetAddr, tcport_t tPort);	int Write(const void* pMsg, int iLen, const CUnixAddress& stUnixAddr);};class hton4{	friend ostream& operator << (ostream& os, const hton4& obj);	private:	unsigned long m_ulValue;	public:	hton4(unsigned long ulValue) { m_ulValue = htonl(ulValue); }};class hton2{	friend ostream& operator << (ostream& os, const hton2& obj);	private:	unsigned short m_ushValue;	public:	hton2(unsigned short ushValue) { m_ushValue = htons(ushValue); }};class ntoh4{	friend istream& operator >> (istream& is, const ntoh4& obj);	private:	unsigned long* m_pulValue;	public:	ntoh4(unsigned long& ulValue) { m_pulValue = &ulValue; }	ntoh4(long& lValue) { m_pulValue = (unsigned long*)&lValue; }	ntoh4(unsigned int& uiValue) { m_pulValue = (unsigned long*)&uiValue; }	ntoh4(int& iValue) { m_pulValue = (unsigned long*)&iValue; }};class ntoh2{	friend istream& operator >> (istream& is, const ntoh2& obj);	private:	unsigned short* m_pushValue;	public:	ntoh2(unsigned short& ushValue) { m_pushValue = &ushValue; }	ntoh2(short& shValue) { m_pushValue = (unsigned short*)&shValue; }};#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片一区二区| 精品美女一区二区三区| 国产精品一区在线观看乱码| 日韩av在线播放中文字幕| 亚洲在线视频网站| 亚洲午夜久久久久久久久电影网| 综合精品久久久| 亚洲欧洲日韩女同| 亚洲精品乱码久久久久久黑人| 亚洲视频 欧洲视频| 亚洲天堂免费看| 亚洲精品国产精华液| 亚洲乱码日产精品bd| 亚洲第一会所有码转帖| 亚洲成人一二三| 日本欧美一区二区三区乱码| 美女在线一区二区| 国产91精品久久久久久久网曝门| a在线欧美一区| 在线免费一区三区| 欧美视频一区二区在线观看| 欧美一区二区三级| 久久蜜桃一区二区| 亚洲丝袜另类动漫二区| 亚洲国产精品久久人人爱蜜臀| 日日骚欧美日韩| 国产真实乱子伦精品视频| 成人手机在线视频| 欧美亚洲动漫制服丝袜| 亚洲精品一线二线三线| 国产精品久久久久aaaa| 亚洲国产精品久久不卡毛片| 精品一区二区三区不卡| 成人免费毛片高清视频| 欧美日韩精品免费观看视频| 久久久国产综合精品女国产盗摄| 亚洲精品videosex极品| 黑人巨大精品欧美黑白配亚洲| 成人精品国产免费网站| 91麻豆精品国产91久久久久久久久 | 国产精品福利影院| 亚洲欧美日韩国产另类专区| 奇米一区二区三区av| 99久久99久久精品免费观看| 欧美日韩视频在线第一区 | 精品国产人成亚洲区| 国产精品第四页| 日精品一区二区三区| 99re亚洲国产精品| 精品三级在线看| 夜色激情一区二区| 国产精品亚洲成人| 欧美tickle裸体挠脚心vk| 一区二区三区在线视频免费观看 | 国产免费成人在线视频| 日韩一区精品字幕| 在线免费不卡电影| 国产精品久久久久久妇女6080 | 91福利视频网站| 久久久久久99精品| 男女男精品视频| 精品视频在线看| 中文字幕一区三区| 成人一区二区三区在线观看| 欧美va日韩va| 日本不卡高清视频| 91精品视频网| 免费看欧美女人艹b| 欧美日韩精品久久久| 亚洲欧洲制服丝袜| 99re这里只有精品视频首页| 国产色91在线| 国模一区二区三区白浆| 日韩女优制服丝袜电影| 日日夜夜一区二区| 3d动漫精品啪啪| 日本特黄久久久高潮| 欧美日韩免费观看一区二区三区| 亚洲综合丝袜美腿| 欧美影视一区在线| 亚洲午夜视频在线观看| 在线观看国产91| 偷窥少妇高潮呻吟av久久免费| 欧美日韩一区二区在线观看| 亚洲午夜免费福利视频| 欧美精品日韩综合在线| 亚洲mv大片欧洲mv大片精品| 91精品欧美一区二区三区综合在| 美腿丝袜一区二区三区| 日韩精品中文字幕在线不卡尤物 | 成人精品在线视频观看| 国产精品欧美一区喷水| 99re热这里只有精品免费视频 | 欧美日韩免费视频| 美腿丝袜亚洲三区| 国产精品网站一区| 精品视频在线免费观看| 久久99精品久久久久久久久久久久| 26uuu亚洲综合色欧美| 成人小视频免费在线观看| 一区二区三区日韩欧美| 欧美一级高清片| 高清日韩电视剧大全免费| 亚洲激情欧美激情| 日韩精品一区二区三区在线观看| 国产一区视频导航| 亚洲精品乱码久久久久久久久| 日韩欧美不卡一区| 91色婷婷久久久久合中文| 麻豆精品在线视频| 最近日韩中文字幕| 日韩一区二区免费在线观看| av亚洲精华国产精华精华 | 久久久久久毛片| 91久久一区二区| 国产精品自拍在线| 肉丝袜脚交视频一区二区| 国产视频一区二区三区在线观看| 欧美日韩黄色一区二区| 成人精品免费看| 美女视频黄久久| 亚洲美女精品一区| 26uuu另类欧美| 欧美少妇bbb| 91麻豆swag| 成人小视频免费观看| 伦理电影国产精品| 亚洲国产精品精华液网站| 中文字幕不卡在线播放| 欧美www视频| 欧美精品久久久久久久多人混战 | 国产精品毛片久久久久久| 欧美日韩高清一区| 97久久久精品综合88久久| 美女视频黄免费的久久| 亚洲综合久久av| 中文字幕亚洲成人| 久久久精品免费网站| 91精品午夜视频| 91福利小视频| 一本色道综合亚洲| www.在线欧美| 懂色av一区二区三区免费看| 蜜桃视频一区二区| 日韩av一区二区三区| 五月天久久比比资源色| 亚洲免费观看高清完整版在线观看 | 天天综合色天天综合色h| 日韩毛片精品高清免费| 久久免费电影网| 日韩欧美123| 欧美成人bangbros| 久久综合色综合88| 欧美变态tickling挠脚心| 日韩欧美另类在线| 欧美精品一区二区不卡| 久久久久久久综合色一本| 久久嫩草精品久久久精品| 精品国产电影一区二区| 精品久久久久久久久久久院品网| 精品国产亚洲一区二区三区在线观看| 精品免费国产二区三区| 久久精品免费在线观看| 国产农村妇女毛片精品久久麻豆| 国产精品欧美综合在线| 亚洲蜜臀av乱码久久精品| 亚洲图片欧美综合| 免费在线观看一区二区三区| 狠狠色狠狠色综合系列| 风间由美一区二区av101| 成人av免费在线观看| 在线观看三级视频欧美| 91精品视频网| 久久精品在线免费观看| 亚洲欧美激情一区二区| 日本三级亚洲精品| 国产一区二区三区免费在线观看| 成人小视频免费在线观看| 91麻豆123| 26uuu亚洲| 亚洲男人的天堂在线aⅴ视频| 亚洲成人在线观看视频| 久久99精品国产麻豆婷婷 | 亚洲自拍偷拍九九九| 美国三级日本三级久久99| 国产一区二区伦理片| 色噜噜狠狠色综合中国| 日韩欧美黄色影院| 国产精品视频在线看| 三级欧美韩日大片在线看| 高清av一区二区| 欧美一区二区三区公司| 国产精品国产自产拍在线| 毛片不卡一区二区| 日本高清成人免费播放| 久久久久久久久久看片| 亚洲成人在线网站| 成人18视频日本| 26uuu国产电影一区二区| 亚洲人123区|