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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iphelpers.h

?? hl2 source code. Do not use it illegal.
?? H
字號:

#ifndef IPHELPERS_H
#define IPHELPERS_H


#include "ichannel.h"


// Loops that poll sockets should Sleep for this amount of time between iterations
// so they don't hog all the CPU.
#define LOOP_POLL_INTERVAL	5


// Useful for putting the arguments into a printf statement.
#define EXPAND_ADDR( x ) (x).ip[0], (x).ip[1], (x).ip[2], (x).ip[3], (x).port


// This is a simple wrapper layer for UDP sockets.
class CIPAddr
{
public:
					CIPAddr();
					CIPAddr( const int inputIP[4], const int inputPort );
					CIPAddr( int ip0, int ip1, int ip2, int ip3, int ipPort );
	
	void			Init( int ip0, int ip1, int ip2, int ip3, int ipPort );
	bool			operator==( const CIPAddr &o ) const;
	bool			operator!=( const CIPAddr &o ) const;

	// Setup to send to the local machine on the specified port.
	void			SetupLocal( int inPort );

public:

	unsigned char	ip[4];
	unsigned short	port;
};



// The chunk walker provides an easy way to copy data out of the chunks as though it were a
// single contiguous chunk of memory.s
class CChunkWalker
{
public:
					CChunkWalker( void const * const *pChunks, const int *pChunkLengths, int nChunks );

	int				GetTotalLength() const;
	void			CopyTo( void *pOut, int nBytes );	

private:
	
	void const * const		*m_pChunks;
	const int				*m_pChunkLengths;
	int						m_nChunks;
	
	int						m_iCurChunk;
	int						m_iCurChunkPos;

	int						m_TotalLength;
};


// This class makes loop that wait on something look nicer. ALL loops using this class
// should follow this pattern, or they can wind up with unforeseen delays that add a whole
// lot of lag.
//
// CWaitTimer waitTimer( 5.0 );
// while ( 1 )
// {
//		do your thing here like Recv() from a socket.
//
//		if ( waitTimer.ShouldKeepWaiting() )
//			Sleep() for some time interval like 5ms so you don't hog the CPU
//		else
//			BREAK HERE
// }
class CWaitTimer
{
public:
			CWaitTimer( double flSeconds );

	bool	ShouldKeepWaiting();	

private:
	unsigned long	m_StartTime;
	unsigned long	m_WaitMS;
};


// Helper function to get time in milliseconds.
unsigned long SampleMilliseconds();


class ISocket
{
public:

	// Call this when you're done.	
	virtual void	Release() = 0;

	
	// Bind the socket so you can send and receive with it.
	// If you bind to port 0, then the system will select the port for you.
	virtual bool	Bind( const CIPAddr *pAddr ) = 0;
	virtual bool	BindToAny( const unsigned short port ) = 0;

	
	// Broadcast some data.
	virtual bool	Broadcast( const void *pData, const int len, const unsigned short port ) = 0;
	
	// Send a packet.
	virtual bool	SendTo( const CIPAddr *pAddr, const void *pData, const int len ) = 0;
	virtual bool	SendChunksTo( const CIPAddr *pAddr, void const * const *pChunks, const int *pChunkLengths, int nChunks ) = 0;

	// Receive a packet. Returns the length received or -1 if no data came in.
	// If pFrom is set, then it is filled in with the sender's IP address.
	virtual int		RecvFrom( void *pData, int maxDataLen, CIPAddr *pFrom ) = 0;

	// How long has it been since we successfully received a packet?
	virtual double	GetRecvTimeout() = 0;
};

// Create a connectionless socket that you can send packets out of.
ISocket* CreateIPSocket();

// This sets up the socket to receive multicast data on the specified group.
// By default, localInterface is INADDR_ANY, but if you want to specify a specific interface
// the data should come in through, you can.
ISocket* CreateMulticastListenSocket( 
	const CIPAddr &addr, 
	const CIPAddr &localInterface = CIPAddr() 
	);


// Setup a CIPAddr from the string. The string can be a dotted IP address or
// a hostname, and it can be followed by a colon and a port number like "1.2.3.4:3443"
// or "myhostname.valvesoftware.com:2342".
//
// Note: if the string does not contain a port, then pOut->port will be left alone.
bool ConvertStringToIPAddr( const char *pStr, CIPAddr *pOut );

// Do a DNS lookup on the IP.
// You can optionally get a service name back too.
bool ConvertIPAddrToString( const CIPAddr *pIn, char *pOut, int outLen );


void IP_GetLastErrorString( char *pStr, int maxLen );

void SockAddrToIPAddr( const struct sockaddr_in *pIn, CIPAddr *pOut );
void IPAddrToSockAddr( const CIPAddr *pIn, struct sockaddr_in *pOut );


#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线观看网站| 亚洲人吸女人奶水| 看国产成人h片视频| 国产精品一区二区在线播放 | jvid福利写真一区二区三区| 国产成人av自拍| 亚洲成av人片一区二区三区 | 中文字幕日韩精品一区| 欧美男同性恋视频网站| 亚洲va欧美va人人爽| 欧美一区二区视频在线观看2022| 蜜臀久久久久久久| 久久色成人在线| 国产成人午夜精品影院观看视频 | 欧美国产丝袜视频| yourporn久久国产精品| 亚洲人成小说网站色在线| 欧美日韩精品一区二区三区四区| 麻豆一区二区三| 国产精品日日摸夜夜摸av| 欧美丝袜丝nylons| 麻豆国产精品一区二区三区 | 欧美精品一区二区精品网| 岛国精品一区二区| 亚欧色一区w666天堂| 欧美一区二区三区日韩| 国产精品一区二区在线观看网站| 日韩美女视频19| 久久新电视剧免费观看| 亚洲精品你懂的| 日韩免费电影网站| 婷婷开心激情综合| 日韩高清不卡一区二区三区| 久草在线在线精品观看| 久久精品国内一区二区三区| 99久久99精品久久久久久 | 成熟亚洲日本毛茸茸凸凹| www.爱久久.com| 69堂国产成人免费视频| 中文字幕 久热精品 视频在线| 一区二区三区蜜桃网| 免费在线成人网| 99久久99久久久精品齐齐| 欧美zozo另类异族| 国产精品久久久久三级| 免费成人在线网站| 色婷婷激情一区二区三区| 欧美tickling网站挠脚心| 亚洲伦在线观看| 国内精品写真在线观看| 91精品欧美一区二区三区综合在 | 久久综合狠狠综合久久激情 | 欧美一区二区三区四区视频| 精品成人私密视频| 偷偷要91色婷婷| 91在线视频免费观看| 国产三级三级三级精品8ⅰ区| 亚洲黄色性网站| 成人性生交大片免费看视频在线 | 亚洲高清视频在线| 99精品国产99久久久久久白柏| 精品久久久三级丝袜| 日日摸夜夜添夜夜添精品视频| 91污片在线观看| 国产精品毛片无遮挡高清| 国产高清不卡一区二区| 日韩精品中文字幕在线不卡尤物| 五月婷婷久久丁香| 欧美三级在线播放| 亚洲欧美日韩国产中文在线| 波多野结衣亚洲| 欧美激情综合网| 成人av电影免费在线播放| 亚洲国产精品av| 丁香婷婷综合色啪| 亚洲国产精品精华液2区45| 国产91高潮流白浆在线麻豆| 国产亚洲欧洲997久久综合| 国产精品亚洲一区二区三区在线 | 欧美精品99久久久**| 午夜一区二区三区在线观看| 欧美日韩中文一区| 美女网站在线免费欧美精品| 欧美一区二区三区公司| 精品一区二区三区影院在线午夜| 日韩精品在线网站| 国产激情91久久精品导航| 欧美韩国日本不卡| 99热99精品| 亚洲国产成人精品视频| 91激情五月电影| 日韩av中文字幕一区二区 | 成人美女视频在线看| 亚洲欧美日韩久久| 欧美精品亚洲一区二区在线播放| 美女视频黄频大全不卡视频在线播放 | 欧美色电影在线| 美女网站视频久久| 亚洲国产精品高清| 欧美色综合影院| 久久97超碰国产精品超碰| 欧美极品aⅴ影院| 欧美日韩一卡二卡| 九九久久精品视频| 亚洲欧洲美洲综合色网| 欧美日韩精品高清| 国产精品中文字幕一区二区三区| 国产精品久久久久桃色tv| 欧美日本视频在线| 国产成人精品午夜视频免费| 亚洲乱码中文字幕| 精品黑人一区二区三区久久| 99re成人在线| 国产自产视频一区二区三区| 亚洲蜜臀av乱码久久精品| 日韩精品在线一区二区| 日本精品视频一区二区| 国产原创一区二区| 亚洲午夜久久久久中文字幕久| 久久精品一区二区三区不卡牛牛| 欧美亚洲综合在线| 成人免费黄色大片| 麻豆精品国产91久久久久久| 亚洲激情五月婷婷| 国产日韩欧美电影| 欧美一级国产精品| 欧美影院精品一区| 91丝袜高跟美女视频| 精品制服美女久久| 日韩电影在线免费观看| 亚洲黄色在线视频| 国产欧美视频在线观看| 日韩视频一区二区三区在线播放| 色综合视频一区二区三区高清| 国产中文字幕一区| 麻豆精品新av中文字幕| 亚洲成av人片在线| 亚洲一区二区av电影| 成人欧美一区二区三区| 国产精品区一区二区三区| 欧美一区二区三区日韩视频| 色综合天天综合色综合av| 国产成人综合在线观看| 九色|91porny| 青青草伊人久久| 亚洲电影中文字幕在线观看| 一区二区三区在线观看国产 | 99久久久国产精品免费蜜臀| 久久99九九99精品| 日本免费新一区视频| 午夜婷婷国产麻豆精品| 婷婷激情综合网| 亚洲h在线观看| 亚洲成人av中文| 亚洲福中文字幕伊人影院| 午夜精品福利一区二区蜜股av| 亚洲精品高清在线| 亚洲黄色在线视频| 一区二区三区在线免费播放| 一级日本不卡的影视| 亚洲国产一区在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 一区二区三区四区乱视频| 亚洲欧美福利一区二区| 亚洲国产一区二区视频| 日日夜夜一区二区| 美女视频黄久久| 国产精品一二三四| 99久久精品国产毛片| 欧洲精品一区二区| 欧美精品日韩一区| 久久久亚洲高清| 国产精品网站在线观看| 亚洲激情图片小说视频| 青青青爽久久午夜综合久久午夜| 老司机午夜精品99久久| 国产精品一区二区三区乱码| www.亚洲色图.com| 欧美少妇性性性| 精品国产免费久久| 亚洲欧美激情在线| 日日噜噜夜夜狠狠视频欧美人| 久99久精品视频免费观看| 91亚洲精品乱码久久久久久蜜桃| 欧美性大战久久久久久久蜜臀| 91精品国产综合久久国产大片| 久久亚洲捆绑美女| 亚洲自拍偷拍图区| 蜜臀av亚洲一区中文字幕| 成人午夜免费av| 在线看不卡av| 久久中文字幕电影| 亚洲一区欧美一区| 国产一区二区精品久久91| 色哟哟国产精品免费观看| 日韩欧美一区二区在线视频| 日韩一区欧美小说| 韩国女主播成人在线| 欧美亚洲动漫另类| 日本一区二区三区在线不卡|