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

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

?? mysocket.cpp

?? socket 編程實例 singleServerMultipleClientSrc
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
#include "mySocket.h"
#include "..\myException\myException.h"
#include "..\myLog\myLog.h"

const int MSG_HEADER_LEN = 6;

mySocket::mySocket(int pNumber)
{
    portNumber = pNumber;
    blocking = 1;

    try
    {
		if ( (socketId=socket(AF_INET,SOCK_STREAM,0)) == -1)
        {
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "";
				detectErrorOpenWinSocket(&errorCode,errorMsg);
				myException openWinSocketException(errorCode,errorMsg);
				throw openWinSocketException;
			#endif

			#ifdef UNIX
				myException openUnixSocketException(0,"unix: error getting host by name");
				throw openUnixSocketException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}

    /* 
	   set the initial address of client that shall be communicated with to 
	   any address as long as they are using the same port number. 
	   The clientAddr structure is used in the future for storing the actual
	   address of client applications with which communication is going
	   to start
	*/
    clientAddr.sin_family = AF_INET;
    clientAddr.sin_addr.s_addr = htonl(INADDR_ANY);
    clientAddr.sin_port = htons(portNumber);
}
    
void mySocket::setDebug(int debugToggle)
{
	try 
	{
		if ( setsockopt(socketId,SOL_SOCKET,SO_DEBUG,(char *)&debugToggle,sizeof(debugToggle)) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "DEBUG option:";
				detectErrorSetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
}

void mySocket::setReuseAddr(int reuseToggle)
{
	try 
	{
		if ( setsockopt(socketId,SOL_SOCKET,SO_REUSEADDR,(char *)&reuseToggle,sizeof(reuseToggle)) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "REUSEADDR option:";
				detectErrorSetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
} 

void mySocket::setKeepAlive(int aliveToggle)
{
	try 
	{
		if ( setsockopt(socketId,SOL_SOCKET,SO_KEEPALIVE,(char *)&aliveToggle,sizeof(aliveToggle)) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "ALIVE option:";
				detectErrorSetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
} 

void mySocket::setLingerSeconds(int seconds)
{
	struct linger lingerOption;
	
	if ( seconds > 0 )
	{
		lingerOption.l_linger = seconds;
		lingerOption.l_onoff = 1;
	}
	else lingerOption.l_onoff = 0;
	 
	try 
	{
		if ( setsockopt(socketId,SOL_SOCKET,SO_LINGER,(char *)&lingerOption,sizeof(struct linger)) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "LINGER option:";
				detectErrorSetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
}

void mySocket::setLingerOnOff(bool lingerOn)
{
	struct linger lingerOption;

	if ( lingerOn ) lingerOption.l_onoff = 1;
	else lingerOption.l_onoff = 0;

	try 
	{
		if ( setsockopt(socketId,SOL_SOCKET,SO_LINGER,(char *)&lingerOption,sizeof(struct linger)) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "LINGER option:";
				detectErrorSetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
}

void mySocket::setSendBufSize(int sendBufSize)
{
	try 
	{
		if ( setsockopt(socketId,SOL_SOCKET,SO_SNDBUF,(char *)&sendBufSize,sizeof(sendBufSize)) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "SENDBUFSIZE option:";
				detectErrorSetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
} 

void mySocket::setReceiveBufSize(int receiveBufSize)
{
	try 
	{
		if ( setsockopt(socketId,SOL_SOCKET,SO_RCVBUF,(char *)&receiveBufSize,sizeof(receiveBufSize)) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "RCVBUF option:";
				detectErrorSetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
}

void mySocket::setSocketBlocking(int blockingToggle)
{
    if (blockingToggle)
    {
        if (getSocketBlocking()) return;
        else blocking = 1;
	}
	else
	{
		if (!getSocketBlocking()) return;
		else blocking = 0;
	}

	try 
	{
		#ifdef WINDOWS_XP
			if (ioctlsocket(socketId,FIONBIO,(unsigned long *)&blocking) == -1)
			{
				int errorCode;
				string errorMsg = "Blocking option: ";
				detectErrorSetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			}
		#endif

		#ifdef UNIX
			if (ioctl(socketId,FIONBIO,(char *)&blocking) == -1)
			{
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			}
		#endif
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
}

int mySocket::getDebug()
{
    int myOption;
    int myOptionLen = sizeof(myOption);

	try 
	{
		if ( getsockopt(socketId,SOL_SOCKET,SO_DEBUG,(char *)&myOption,&myOptionLen) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "get DEBUG option: ";
				detectErrorGetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
    
    return myOption;
}

int mySocket::getReuseAddr()
{
    int myOption;        
    int myOptionLen = sizeof(myOption);

	try 
	{
		if ( getsockopt(socketId,SOL_SOCKET,SO_REUSEADDR,(char *)&myOption,&myOptionLen) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "get REUSEADDR option: ";
				detectErrorGetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}

	return myOption;
}

int mySocket::getKeepAlive()
{
    int myOption;        
    int myOptionLen = sizeof(myOption);

	try 
	{
		if ( getsockopt(socketId,SOL_SOCKET,SO_KEEPALIVE,(char *)&myOption,&myOptionLen) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "get KEEPALIVE option: ";
				detectErrorGetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}
    return myOption;    
}

int mySocket::getLingerSeconds()
{
	struct linger lingerOption;
	int myOptionLen = sizeof(struct linger);

	try 
	{
		if ( getsockopt(socketId,SOL_SOCKET,SO_LINGER,(char *)&lingerOption,&myOptionLen) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "get LINER option: ";
				detectErrorGetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}

	return lingerOption.l_linger;
}

bool mySocket::getLingerOnOff()
{
	struct linger lingerOption;
	int myOptionLen = sizeof(struct linger);

	try 
	{
		if ( getsockopt(socketId,SOL_SOCKET,SO_LINGER,(char *)&lingerOption,&myOptionLen) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "get LINER option: ";
				detectErrorGetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif
        }
	}
    catch(myException& excp)
	{
		excp.response();
		exit(1);
	}

	if ( lingerOption.l_onoff == 1 ) return true;
	else return false;
}

int mySocket::getSendBufSize()
{
    int sendBuf;
    int myOptionLen = sizeof(sendBuf);

	try 
	{
		if ( getsockopt(socketId,SOL_SOCKET,SO_SNDBUF,(char *)&sendBuf,&myOptionLen) == -1 )
		{
			#ifdef WINDOWS_XP
				int errorCode;
				string errorMsg = "get SNDBUF option: ";
				detectErrorGetSocketOption(&errorCode,errorMsg);
				myException socketOptionException(errorCode,errorMsg);
				throw socketOptionException;
			#endif

			#ifdef UNIX
				myException unixSocketOptionException(0,"unix: error getting host by name");
				throw unixSocketOptionException;
			#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美女少妇撒尿| 日韩三级免费观看| 亚洲特级片在线| 色国产综合视频| 亚洲国产综合人成综合网站| 欧美亚一区二区| 香蕉久久一区二区不卡无毒影院 | 亚洲激情一二三区| 色狠狠一区二区三区香蕉| 亚洲一区二区三区自拍| 欧美猛男gaygay网站| 欧美aaaaa成人免费观看视频| 欧美岛国在线观看| 成人av在线观| 亚洲成人午夜电影| 精品免费一区二区三区| 懂色av一区二区三区免费观看| 中文字幕中文字幕一区| 在线观看区一区二| 韩国欧美一区二区| 亚洲美女在线一区| 日韩午夜精品电影| 99精品在线观看视频| 天堂精品中文字幕在线| 久久久久久久电影| 色婷婷av一区二区三区大白胸| 图片区小说区国产精品视频| 久久综合久久综合久久综合| 色综合网站在线| 久久99国产精品免费| 国产精品剧情在线亚洲| 欧美肥大bbwbbw高潮| 国产剧情一区在线| 亚洲国产成人高清精品| 国产拍欧美日韩视频二区| 欧美中文字幕一区| 懂色av中文一区二区三区| 亚洲成a天堂v人片| 国产精品久久久久久一区二区三区| 欧美日韩国产欧美日美国产精品| 成人激情黄色小说| 精品一区二区三区在线视频| 亚洲精品乱码久久久久久久久| 精品久久久久一区二区国产| 欧美综合欧美视频| 97久久超碰精品国产| 国产一区二区三区四| 三级成人在线视频| 亚洲码国产岛国毛片在线| 亚洲精品一区二区在线观看| 欧美日韩三级在线| 99久久99久久综合| 成人激情视频网站| 国产成人在线网站| 精品一区二区三区免费| 日本中文字幕一区二区有限公司| 成人欧美一区二区三区黑人麻豆 | 国产日韩欧美综合一区| 欧美一区二区三区免费大片| 欧美婷婷六月丁香综合色| 99re热视频精品| 成人av电影免费观看| 高清在线成人网| 韩国成人在线视频| 久久超碰97人人做人人爱| 亚洲v日本v欧美v久久精品| 亚洲精品视频在线观看免费| 国产精品国产三级国产| 国产日本欧洲亚洲| 国产日韩视频一区二区三区| 国产校园另类小说区| 久久夜色精品一区| 欧美大片一区二区三区| 日韩一级二级三级精品视频| 337p亚洲精品色噜噜狠狠| 欧美日韩和欧美的一区二区| 欧美色老头old∨ideo| 欧美亚洲动漫另类| 欧美日本一区二区三区| 欧美日韩国产精选| 欧美一级精品大片| 欧美不卡视频一区| 国产天堂亚洲国产碰碰| 国产精品区一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 久久视频一区二区| 亚洲国产高清不卡| 亚洲色图欧洲色图| 亚洲一区二区免费视频| 图片区小说区区亚洲影院| 麻豆国产精品一区二区三区| 紧缚奴在线一区二区三区| 国产美女精品人人做人人爽 | 免费观看成人鲁鲁鲁鲁鲁视频| 蜜臀久久99精品久久久久久9| 黄色资源网久久资源365| 国产精品一级片| jizz一区二区| 欧美日韩一级片在线观看| 欧美一区二区三区公司| 久久久99久久| 一区二区三区四区不卡在线 | 韩国欧美国产1区| 成人午夜视频网站| 欧美日韩中文字幕一区二区| 欧美一区二区三区啪啪| 国产亚洲欧美色| 亚洲一区在线视频观看| 久久99久国产精品黄毛片色诱| 国产精品亚洲视频| 91国产免费看| 久久伊99综合婷婷久久伊| 一区二区三区中文免费| 另类小说视频一区二区| 成人动漫av在线| 欧美一级黄色片| 一区二区三区四区中文字幕| 韩国欧美国产一区| 欧美午夜电影网| 国产欧美在线观看一区| 五月天视频一区| 播五月开心婷婷综合| 在线综合+亚洲+欧美中文字幕| 国产欧美一区二区精品久导航| 亚洲成人av一区二区三区| 丁香婷婷综合五月| 这里只有精品99re| 亚洲欧洲无码一区二区三区| 美女网站一区二区| 91成人网在线| 国产精品久久久久一区二区三区 | 717成人午夜免费福利电影| 亚洲国产精品高清| 蜜桃视频第一区免费观看| 色婷婷综合在线| 日本一区二区三区电影| 日本成人超碰在线观看| 91蜜桃在线免费视频| 久久日韩粉嫩一区二区三区| 亚洲超碰精品一区二区| 色综合久久中文综合久久牛| 国产女主播视频一区二区| 精品一区二区三区视频在线观看| 欧美精品在线观看一区二区| 亚洲欧美日韩在线| av电影一区二区| 国产女同性恋一区二区| 国内欧美视频一区二区 | 色吧成人激情小说| 中文字幕成人在线观看| 精品一区精品二区高清| 69p69国产精品| 亚洲地区一二三色| 欧美亚洲国产怡红院影院| 亚洲美女视频在线观看| 色综合久久久久综合体桃花网| 国产精品久久久久久久久快鸭| 国产酒店精品激情| 久久人人97超碰com| 国产一区二区三区不卡在线观看| 日韩视频在线观看一区二区| 免费精品99久久国产综合精品| 欧美一区二视频| 日本成人中文字幕| 精品剧情v国产在线观看在线| 久久国产成人午夜av影院| 欧美一级日韩不卡播放免费| 日本一区中文字幕| 欧美mv日韩mv国产网站app| 韩国女主播成人在线| 国产日产亚洲精品系列| 国产91精品精华液一区二区三区 | 欧美三级中文字| 午夜伦欧美伦电影理论片| 欧美一级一级性生活免费录像| 美国十次综合导航| 久久免费电影网| 99视频有精品| 亚洲精品视频在线观看免费| 精品视频资源站| 久久精品国产一区二区| 久久影院午夜片一区| 不卡的av电影在线观看| 国产精品蜜臀av| 久久亚洲二区三区| 精品成人在线观看| 99精品欧美一区二区三区综合在线| 国产日韩视频一区二区三区| 成人91在线观看| 一级精品视频在线观看宜春院| 欧美日韩一区三区四区| 日本不卡一区二区| 国产亚洲综合性久久久影院| 成人aaaa免费全部观看| 亚洲.国产.中文慕字在线| 精品日韩一区二区| 一本久久a久久免费精品不卡| 性欧美大战久久久久久久久| 久久日韩精品一区二区五区| 成人精品视频.|