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

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

?? ysocket.h

?? 非常方便的網(wǎng)絡(luò)Socket類
?? H
?? 第 1 頁 / 共 3 頁
字號(hào):
void YSocket<STRING>::Bind (const SOCKADDR* lpSockAddr,int mode)
{
	ASSERT(m_hSocket != NULL);
	ASSERT(lpSockAddr != NULL) ;
	switch(mode){
	case 1:
		BOOL tp = TRUE;
		setsockopt(m_hSocket,SOL_SOCKET ,SO_REUSEADDR,(char*)&tp,sizeof(BOOL));
		break;
	}	
	if ( bind(m_hSocket,lpSockAddr,sizeof(struct sockaddr_in)) == SOCKET_ERROR )
	{
		STRING tp;tp.Format("Bind.no.2:%s",GetErrorStr());
		throw tp ;	
	}
	GetIpAdd(1);
}

template <class STRING>
BOOL YSocket<STRING>::Close(int mode )
{
	if(IsLive){
		//if(JugeTime(1,1)!=1){
		//Sleep(1);
		try{
			if(nSTP == SOCK_STREAM){
				//char tpbuffer[1000];
				//Read(tpbuffer,1000,0);
				//Sleep(50);
				
				//struct linger Linger; 
				//Linger.l_onoff = 1;   /* 開啟 linger 設(shè)定*/ 
				//Linger.l_linger = 5;  /* 設(shè)定 linger 時(shí)間為 5 秒 */ 
				//
				if(shutdown(m_hSocket,SD_BOTH)!=0||
					closesocket(m_hSocket)!=0){
					return FALSE;
				};
				IsLive = 0;
				m_hSocket = NULL;
			} 
		}catch(...){
			return FALSE;
		}
	}
	return TRUE;
}

template <class STRING>
void YSocket<STRING>::Connect(const SOCKADDR* lpSockAddr)
{
	YASSERT(m_hSocket != NULL);
	if(connect(m_hSocket, lpSockAddr, sizeof(SOCKADDR)) == SOCKET_ERROR) {
		STRING tp;tp.Format("Connect.no.1:%s",GetErrorStr());
		throw tp ;
	}
	sfGetP = 0;
	tpserver=*lpSockAddr;
}
// 可以直接用IP地址或域名
template <class STRING>
void YSocket<STRING>::Connect(LPCTSTR lpszHostAddress, UINT nHostPort)
{
	YASSERT(m_hSocket != NULL);
	SOCKADDR_IN server;
    server.sin_family = AF_INET;
    server.sin_port = htons(nHostPort);
	if((server.sin_addr.s_addr=inet_addr(lpszHostAddress)) == INADDR_NONE)
	{   // lpszHostAddress 不是*.*.*.*格式的IP地址
		struct hostent *hp;
        // 通過主機(jī)名獲取主機(jī)地址
		if((hp = gethostbyname(lpszHostAddress)) != NULL)
		{
			memcpy(&(server.sin_addr),hp->h_addr_list[0],hp->h_length);
			server.sin_family = hp->h_addrtype;
		}else {
			STRING tp;tp.Format("Connect.no.2:%s",GetErrorStr());
			throw tp ;
		}
		//delete hp;
	}
	Connect((const SOCKADDR*)&server);
}

template <class STRING>
void YSocket<STRING>::Create(int nSocketType){
	int nProtocal ;
	if (nSocketType == SOCK_DGRAM){
		nProtocal = IPPROTO_UDP ;
	}else if(nSocketType == SOCK_STREAM){
		nProtocal = IPPROTO_TCP ;
	}else if(nSocketType == SOCK_RAW){
		nProtocal = IPPROTO_ICMP ;
	}

	if ( (m_hSocket = socket(AF_INET, nSocketType, nProtocal)) == INVALID_SOCKET){
	//	prerrlog("Creat Faild\n:");
	//	prerrlog(WSAGetLastError());
		STRING tp;tp.Format("Create.no.1:%s",GetErrorStr());
		throw tp ;
	}
	/*
	if(setsockopt(m_hSocket, SOL_SOCKET, SO_LINGER, (const char*)&lg, sizeof(struct linger))==-1){
		STRING tp;tp.Format("Create.no.2:%s",GetErrorStr());
		throw tp ;
	} 
	//*/
	IsLive = 1;
	nSTP=nSocketType;
}

template <class STRING>
void YSocket<STRING>::Listen(int nConnectionBacklog)
{
	if (nSTP == SOCK_DGRAM){
		;//do nothing
	}else if(nSTP== SOCK_STREAM){
		//int hh = SOMAXCONN;
		listen(m_hSocket,nConnectionBacklog);
	}else if(nSTP== SOCK_RAW){
		;//do nothing
	}

}

template <class STRING>
int YSocket<STRING>::Receive(void* lpBuf,const int nBufLen, 
					   const int nSecs  )
{
	if(JugeTime(nSecs,1)!=1){
		return 0;
	}
	int nBytesReceived;
	if((nBytesReceived=recv(m_hSocket,(char *)lpBuf,nBufLen,0))==SOCKET_ERROR){
		STRING tp;tp.Format("Receive.no.1:%s",GetErrorStr());
		throw tp ;
	}
	SHUT_MODE = SD_SEND ;
	return nBytesReceived;
}

template <class STRING>
int YSocket<STRING>::ReceiveFrom(void* lpBuf, const int nBufLen,
						   LPCTSTR pSocketAddress,UINT& rSocketPort,
						   const int nSecs)
{
	struct sockaddr_in sinAddress ;
	GetSockAddr(sinAddress,pSocketAddress,rSocketPort);
	ReceiveFrom(lpBuf,nBufLen,(sockaddr *)&sinAddress,nSecs);
	return 0; 
}

template <class STRING>
int YSocket<STRING>::ReceiveFrom(void* lpBuf,const int nBufLen,const int nSecs)
{
	SOCKADDR* lpSockAddr=&tpserver;
	int ret,nBytesReceived=0,len;
	sockaddr_in addrfrom;
	ret=JugeTime(nSecs,1);
	if(ret==1){
		len=sizeof(addrfrom);
		if((nBytesReceived = recvfrom(m_hSocket, (char*)lpBuf, nBufLen, 0,(sockaddr *)&addrfrom,&len)) == SOCKET_ERROR)
			STRING tp;tp.Format("ReceiveFrom.no.1:%s",GetErrorStr());
			throw tp ;
	}
	return nBytesReceived;
}

template <class STRING>
int YSocket<STRING>::ReceiveFrom(void* lpBuf, const int nBufLen,SOCKADDR* lpSockAddr, 
						   const int nSecs=DEFAULT_TIMEOUT)
{
	int ret,nBytesReceived=0,len;
	sockaddr_in addrfrom;
	ret=JugeTime(nSecs,1);
	if(ret==1){
		len=sizeof(addrfrom);
		if((nBytesReceived = recvfrom(m_hSocket, (char*)lpBuf, nBufLen, 0,(sockaddr *)&addrfrom,&len)) == SOCKET_ERROR){
			STRING tp;tp.Format("ReceiveFrom.no.1:%s",GetErrorStr());
			throw tp ;	
		}
	}
	return nBytesReceived;
}

template <class STRING>
int YSocket<STRING>::ReceiveTest(void* lpBuf, const int nBufLen)
{
	int ret,nBytesReceived=0;
	ret=JugeTime(0);
	if(ret==1){//可讀,有數(shù)據(jù)要發(fā)送過來	//接收sock發(fā)送來的數(shù)據(jù)			
		if((nBytesReceived = recv(m_hSocket, (char*)lpBuf, nBufLen, 0)) == SOCKET_ERROR){
			STRING tp;tp.Format("ReceiveTest.no.2:%s",GetErrorStr());
			throw tp ;	
		}
		/*注釋掉了,2004-10-1 因?yàn)檫@個(gè)僅僅是測(cè)試,所以可能是什么都收不到,但是連接沒有斷
		if(nBytesReceived==0){		//如果對(duì)方斷開	
			STRING tp;tp.Format("ReceiveTest.no.3:%s",GetErrorStr());
			throw tp ;	
		}
		*/
	}
	return nBytesReceived;
}
template <class STRING>
int YSocket<STRING>::Send(const void* lpBuf, int nBufLen, 
					const int nSecs)
{
	int ret,nBytesReceived=0;
	ret=JugeTime(nSecs,2);
	if(ret==2){//可以寫
		if((nBytesReceived=send(m_hSocket,(char*)lpBuf,nBufLen,0))==SOCKET_ERROR){
			STRING tp;tp.Format("Send.no.1:%s",GetErrorStr());
			throw tp ;	
		}
	}else return 0;
	SHUT_MODE = SD_RECEIVE  ;
	return nBytesReceived;
}

template <class STRING>
int YSocket<STRING>::Write(const void* lpBuf, int nBufLen, const int nSecs)
{
	if(JugeTime(nSecs,2)!=2){
		return 0;	//不可以寫則返回
	}
	//TRACE("begin_Write:%d   ",nBufLen);
	int send_size = 0;
	int tpsize = 0;
	while(send_size<nBufLen){
		tpsize=nBufLen-send_size;
		if((tpsize=send(m_hSocket,(char*)lpBuf+send_size,tpsize,0))==SOCKET_ERROR){
			STRING tp;tp.Format("Write.no.1:%s",GetErrorStr());
			throw tp ;	
		}
		send_size+=tpsize;
	}
	//TRACE("end_Write:%d   \n",send_size);
	SHUT_MODE = SD_RECEIVE ; 
	return send_size;
}

template <class STRING>
int YSocket<STRING>::Read(void* lpBuf, int nBufLen,const int nSecs,int mode)
{
//TRACE("JugeTime Begin On Read!\n");
	int tpsize=0;
  if(!nBufLen)return 0;
	if(JugeTime(nSecs,1)!=1){
//TRACE("JugeTime Failed On Read!\n");
		return 0;
		char h[1];
		if((tpsize=recv(m_hSocket,h,0,0))==SOCKET_ERROR)	{
			STRING tp;tp.Format("Read.no.0:%s",GetErrorStr());
			throw tp ;	
		}
	}
//TRACE("JugeTime Success On Read!\n");
	int recv_size=0;
	int timeNum=0;bool timebool=0;
	while(recv_size<nBufLen){
		tpsize=nBufLen-recv_size;
		if(timeNum!=0&&JugeTime(timeNum,1)!=1){
			if(mode){//強(qiáng)制讀取
				if(JugeTime(60,1)!=1){
					return recv_size;
				};
			}else{
				timeNum++;
				if(JugeTime(timeNum,1)!=1){
					return recv_size;
				}
			}
		}
		if((tpsize=recv(m_hSocket,(char *)lpBuf+recv_size,tpsize,0))==SOCKET_ERROR)	{
			STRING tp;tp.Format("Read.no.1:%s",GetErrorStr());
			throw tp ;	
		}else if(tpsize==0){
			if(nSecs==-1){//如果為盡量讀的模式,則這個(gè)表示無法繼續(xù)讀取了,不抱錯(cuò)誤就返回
				break;
			}else{
				STRING tp;tp.Format("Read.no.2:%s",GetErrorStr());
				throw tp ;	
			}
		}
		recv_size += tpsize;
		if(mode){
		}else{
			if(timebool)timeNum++;
			timebool = !timebool;
		}
	}
	SHUT_MODE = SD_SEND ;
	return recv_size;
}

template <class STRING>
int YSocket<STRING>::SendTo(const void* lpBuf, int nBufLen,UINT nHostPort, 
					  LPCTSTR lpszHostAddress , const int nSecs)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲伦在线观看| 欧美福利一区二区| 成人精品亚洲人成在线| 国产一区二区视频在线播放| 日本免费在线视频不卡一不卡二| 天天综合网 天天综合色| 午夜精品久久久久影视| 视频精品一区二区| 精品一区二区三区视频 | 亚洲精品欧美在线| 亚洲精品成人在线| 天堂一区二区在线| 国产精品中文字幕一区二区三区| 狠狠色丁香婷婷综合| 成人中文字幕电影| 91成人免费在线视频| 在线播放91灌醉迷j高跟美女| 欧美高清视频在线高清观看mv色露露十八 | 欧美大白屁股肥臀xxxxxx| 精品久久国产字幕高潮| 亚洲国产精品成人综合| 一区2区3区在线看| 紧缚奴在线一区二区三区| 成人黄色网址在线观看| 欧美精品自拍偷拍动漫精品| 2024国产精品视频| 亚洲精品成人悠悠色影视| 美女性感视频久久| 91视视频在线观看入口直接观看www | 国产精品一区二区91| 91啪九色porn原创视频在线观看| 欧美片在线播放| 国产精品女同一区二区三区| 亚洲18女电影在线观看| 国产成人高清视频| 欧美日韩国产免费| 亚洲国产精华液网站w| 五月激情综合婷婷| 成人污视频在线观看| 欧美蜜桃一区二区三区| 国产精品日韩精品欧美在线| 青青草97国产精品免费观看无弹窗版| 成人午夜在线免费| 日韩精品中文字幕一区二区三区| 中日韩免费视频中文字幕| 日本不卡在线视频| 色综合天天综合在线视频| 久久综合九色综合欧美就去吻| 亚洲成人午夜电影| 色吊一区二区三区| 中文字幕在线观看不卡| 国产高清在线观看免费不卡| 日韩久久久精品| 青娱乐精品在线视频| 欧美人妖巨大在线| 亚洲午夜精品一区二区三区他趣| 成人久久视频在线观看| 久久久久久久久99精品| 激情五月播播久久久精品| 91精品免费在线| 视频一区在线视频| 777奇米成人网| 日日夜夜精品视频天天综合网| 91国偷自产一区二区三区观看| 国产精品传媒视频| 不卡视频在线观看| 中文字幕日韩av资源站| av高清不卡在线| 国产精品久久久爽爽爽麻豆色哟哟 | 制服丝袜中文字幕一区| 亚洲一区二区三区小说| 欧美日韩一级视频| 日本中文字幕一区二区有限公司| 欧美欧美欧美欧美首页| 蜜桃久久av一区| 久久亚洲一级片| 高清在线观看日韩| 亚洲天堂福利av| 欧美亚洲禁片免费| 日本视频一区二区| 精品成人免费观看| 国产不卡在线视频| 亚洲三级电影全部在线观看高清| 91小视频免费观看| 婷婷综合另类小说色区| 日韩欧美在线影院| 国产不卡视频一区二区三区| 亚洲欧洲三级电影| 欧美精品免费视频| 国产麻豆精品久久一二三| 国产精品久久三| 在线免费观看不卡av| 美腿丝袜在线亚洲一区| 国产婷婷一区二区| 欧美午夜精品理论片a级按摩| 日韩国产精品久久久| 久久久亚洲欧洲日产国码αv| 成人av网站在线观看| 亚洲电影一区二区| 精品日本一线二线三线不卡| 成人黄色小视频| 亚洲国产精品一区二区www| 欧美mv日韩mv国产| 色诱亚洲精品久久久久久| 蜜臀久久久99精品久久久久久| 国产欧美日韩在线| 欧美日韩一区二区欧美激情| 国产精品一区一区三区| 亚洲综合男人的天堂| www欧美成人18+| 欧美天堂亚洲电影院在线播放| 麻豆91免费看| 亚洲综合精品久久| 国产欧美一区二区精品婷婷| 欧美日韩亚洲综合| 成人午夜免费视频| 裸体在线国模精品偷拍| 亚洲婷婷国产精品电影人久久| 日韩午夜激情视频| 欧美性感一类影片在线播放| 国产精品一区二区黑丝| 蜜桃av噜噜一区| 一区二区三区精品视频在线| 国产欧美综合在线观看第十页| 欧美另类高清zo欧美| av在线不卡网| 国产电影精品久久禁18| 青草国产精品久久久久久| 一区二区三区高清| 国产精品成人一区二区三区夜夜夜| 日韩一级黄色片| 欧美日韩综合在线免费观看| 成人高清在线视频| 国产成人免费视| 韩国av一区二区三区四区| 日韩高清一区在线| 亚洲国产毛片aaaaa无费看| 亚洲人成精品久久久久| 国产精品美女久久久久av爽李琼| 欧美va亚洲va| 精品剧情v国产在线观看在线| 制服丝袜在线91| 91精品国产色综合久久不卡电影 | 欧美国产成人在线| 国产日韩av一区| 国产午夜精品久久久久久免费视| 日韩一区二区三免费高清| 69久久99精品久久久久婷婷 | 欧美精品xxxxbbbb| 欧美四级电影网| 欧美日韩成人高清| 9191久久久久久久久久久| 91麻豆精品国产91久久久久久久久 | 色视频欧美一区二区三区| 99国产精品国产精品毛片| av不卡免费在线观看| 色8久久人人97超碰香蕉987| 日本大香伊一区二区三区| 欧美性色aⅴ视频一区日韩精品| 色综合咪咪久久| 欧美日韩国产片| 日韩欧美高清dvd碟片| 日韩精品中文字幕一区二区三区| 亚洲精品在线观看视频| 国产欧美一区二区精品性色| 中文字幕一区二区在线播放 | 久久66热re国产| 国产成人精品免费一区二区| 99精品国产视频| 欧美日韩日本视频| 久久综合色鬼综合色| 国产精品日产欧美久久久久| 亚洲国产日韩在线一区模特| 免费视频一区二区| 成人性生交大片免费看在线播放| 色综合天天综合狠狠| 欧美精品vⅰdeose4hd| 国产亚洲精品bt天堂精选| 亚洲女人小视频在线观看| 免费久久99精品国产| 成人午夜电影久久影院| 欧美伦理视频网站| 国产欧美精品在线观看| 亚洲图片一区二区| 国产成人av电影免费在线观看| 色噜噜夜夜夜综合网| 2023国产精品| 日韩综合一区二区| 99久久伊人精品| 26uuu亚洲| 亚洲一二三区视频在线观看| 国产一区二区女| 欧美日韩日本视频| 国产精品高潮呻吟| 极品少妇xxxx精品少妇| 欧美四级电影在线观看| 国产精品欧美经典| 国产乱妇无码大片在线观看| 欧美精品第一页| 亚洲色图丝袜美腿|