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

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

?? mysocket.cpp

?? socket 編程實(shí)例 singleServerMultipleClientSrc
?? CPP
?? 第 1 頁 / 共 3 頁
字號(hào):
#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
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区在线观看| 久草热8精品视频在线观看| 三级影片在线观看欧美日韩一区二区 | 国产三级精品在线| 国产精品久久久一区麻豆最新章节| 日韩一区在线播放| 免费成人在线网站| 国产aⅴ精品一区二区三区色成熟| 色悠悠久久综合| 日韩视频免费观看高清完整版| 国产亚洲污的网站| 亚洲一区二区中文在线| 国内精品国产三级国产a久久| 97精品久久久久中文字幕| 欧美日韩国产a| 国产午夜一区二区三区| 亚洲激情男女视频| 精品中文av资源站在线观看| 色婷婷国产精品| 亚洲精品一线二线三线| 亚洲精品日产精品乱码不卡| 久久99精品久久久久久动态图| 99国产精品国产精品毛片| 日韩视频国产视频| 亚洲一区二区三区四区在线观看| 激情综合一区二区三区| 欧美色中文字幕| 中文字幕免费在线观看视频一区| 五月天亚洲婷婷| fc2成人免费人成在线观看播放| 欧美一级淫片007| 一区二区三区色| 国产精品123| 亚洲成人tv网| 欧美丰满嫩嫩电影| 亚洲精品一区二区三区影院 | 日韩av一级电影| 91麻豆国产福利精品| 久久午夜羞羞影院免费观看| 亚洲国产日韩综合久久精品| 成人午夜视频网站| 精品国产自在久精品国产| 亚洲chinese男男1069| jizz一区二区| 久久亚洲免费视频| 老色鬼精品视频在线观看播放| 色婷婷精品大在线视频| 国产精品免费aⅴ片在线观看| 美女性感视频久久| 欧美日韩视频在线第一区| 亚洲视频一区在线| 福利电影一区二区| 国产午夜精品理论片a级大结局 | www国产成人免费观看视频 深夜成人网| 一区二区三区四区不卡在线 | 亚洲成人黄色小说| 日本伦理一区二区| 中文字幕亚洲欧美在线不卡| 国产精品99久久久| 亚洲精品免费视频| 3atv一区二区三区| 美女脱光内衣内裤视频久久影院| 在线观看日产精品| 亚洲成人午夜电影| 中文字幕一区二区三区精华液 | 欧美最新大片在线看| 中文字幕一区二区三区色视频| 春色校园综合激情亚洲| 中文字幕国产一区| 成人综合婷婷国产精品久久蜜臀 | 粉嫩绯色av一区二区在线观看| 精品福利一区二区三区免费视频| 蜜臀av国产精品久久久久| 欧美美女直播网站| 中文字幕一区二区三区四区不卡 | 337p亚洲精品色噜噜| 一区二区免费在线| av网站免费线看精品| 欧美一区二区三区系列电影| 精品成人免费观看| 七七婷婷婷婷精品国产| 在线不卡的av| 日韩在线卡一卡二| 7777精品伊人久久久大香线蕉最新版| 亚洲一区二区视频在线| 色网站国产精品| 综合分类小说区另类春色亚洲小说欧美| 一区二区三区国产豹纹内裤在线 | 久久久国产午夜精品| 久久91精品久久久久久秒播| 日韩欧美国产三级电影视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 8x8x8国产精品| 日本不卡在线视频| 3d动漫精品啪啪一区二区竹菊| 夜色激情一区二区| 欧美日韩视频在线观看一区二区三区| 亚洲国产日韩在线一区模特| 欧美日韩视频不卡| 手机精品视频在线观看| 日韩午夜在线播放| 国产美女在线精品| 久久久精品国产免费观看同学| 99久久精品国产观看| 一区二区三区免费观看| 欧美精品在线观看播放| 天堂va蜜桃一区二区三区| 日韩无一区二区| 国产精品亚洲第一区在线暖暖韩国| 国产亚洲1区2区3区| 国产精品自拍网站| 亚洲精品ww久久久久久p站| 欧美羞羞免费网站| 欧美a级理论片| 国产日产欧美一区| 色婷婷久久综合| 午夜精品久久久久| 日韩免费看网站| 成人av网站在线| 亚洲国产婷婷综合在线精品| 日韩一区二区视频| 风间由美一区二区三区在线观看 | 国产在线精品免费av| 国产亚洲一二三区| 欧美人体做爰大胆视频| 国产在线精品不卡| 亚洲一区二区综合| 久久婷婷国产综合精品青草| 99久久精品国产导航| 一区二区三区91| 欧美亚洲国产bt| 国产激情精品久久久第一区二区| 亚洲人成网站色在线观看| 91精品国产综合久久久久久漫画| 国产一区二区三区在线观看免费 | 亚洲va韩国va欧美va精品| 精品999在线播放| 色综合天天综合| 精品一区二区三区的国产在线播放| 日韩午夜三级在线| 亚洲男人的天堂网| 日韩久久精品一区| 91在线云播放| 精品无人码麻豆乱码1区2区| 亚洲色图另类专区| 欧美岛国在线观看| 91蝌蚪porny九色| 久久成人精品无人区| 一区二区三区精密机械公司| 久久久精品人体av艺术| 91麻豆精品国产91久久久久久久久 | 国产高清精品网站| 亚洲黄色在线视频| 中文字幕不卡在线| 91精品福利在线一区二区三区 | 亚洲国产高清在线观看视频| 91精品国产综合久久精品图片| 国产 欧美在线| 亚洲综合久久久| 久久精品日韩一区二区三区| 91麻豆精品久久久久蜜臀| 91玉足脚交白嫩脚丫在线播放| 精东粉嫩av免费一区二区三区| 亚洲福利视频一区二区| 国产精品国产馆在线真实露脸 | 日韩va欧美va亚洲va久久| 亚洲女同一区二区| 国产欧美久久久精品影院| 日韩一区二区三区四区| 91日韩精品一区| 成人美女视频在线观看| 国内精品伊人久久久久影院对白| 亚洲电影一级黄| 自拍偷拍欧美精品| 一区在线播放视频| 最好看的中文字幕久久| 久久久不卡网国产精品二区| 日韩午夜av电影| 91精品国产麻豆| 欧美久久婷婷综合色| 91香蕉视频在线| 91国偷自产一区二区三区观看| 91香蕉视频mp4| heyzo一本久久综合| 成人午夜免费电影| 福利一区二区在线| 成人h动漫精品一区二区| 国产成人av电影在线观看| 国产剧情一区在线| 国产麻豆成人精品| 蜜臀av亚洲一区中文字幕| 国产精品久久国产精麻豆99网站| 午夜成人免费电影| 亚洲国产一区二区三区青草影视| 亚洲精品亚洲人成人网在线播放| 亚洲欧洲日韩女同| 亚洲欧美激情小说另类| 国产精品久久久久久久久免费丝袜| 成人性视频免费网站| 国产精品中文有码|