日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]最近使用TCP server時(shí),發(fā)現(xiàn)如果監(jiān)控INADDR_ANY地址也就是0.0.0.0后,如果使用本機(jī)ip再去監(jiān)控同樣的端口,一樣可以監(jiān)控成功。比如我的本機(jī)地址為10.254.1.100,我監(jiān)控0.

最近使用TCP server時(shí),發(fā)現(xiàn)如果監(jiān)控INADDR_ANY地址也就是0.0.0.0后,如果使用本機(jī)ip再去監(jiān)控同樣的端口,一樣可以監(jiān)控成功。

比如我的本機(jī)地址為10.254.1.100,我監(jiān)控0.0.0.0 1200端口 ?,再啟動(dòng)一個(gè)服務(wù)器10.254.1.100 1200端口,數(shù)據(jù)都會到10.254.1.100 1200這里去,如果關(guān)閉掉10.254.1.100 1200,則數(shù)據(jù)會到0.0.0.0 1200。這個(gè)在服務(wù)器上會導(dǎo)致很多意想不到的結(jié)果,相當(dāng)于端口被劫持了一樣,并且對調(diào)試也相當(dāng)不利。


通過設(shè)置SO_REUSEADDR可以解決這個(gè)問題。


//獨(dú)占當(dāng)前端口,防止多網(wǎng)卡情況下端口被重復(fù)使用,導(dǎo)致出現(xiàn)不可預(yù)知的情況
	//不允許同一個(gè)端口在不同IP下重復(fù)監(jiān)控
	char?opt?=?0;
	setsockopt(sockSvr,?SOL_SOCKET,?SO_REUSEADDR,?(const?char?*)&opt,?sizeof(opt));
	//SO_REUSEADDR?為true?就是允許在相同的端口不同的IP地址上創(chuàng)建套接描述字。


以下是我的多網(wǎng)卡測試的例子


SOCKET?sockSvr?=?WSASocket(AF_INET,?SOCK_STREAM,?0,?0,?0,?WSA_FLAG_OVERLAPPED);
	if(INVALID_SOCKET?==?sockSvr)
	{
		WSACleanup();
		return?IOCP_SOCKET_ERROR;
	}

	//獨(dú)占當(dāng)前端口,防止多網(wǎng)卡情況下端口被重復(fù)使用,導(dǎo)致出現(xiàn)不可預(yù)知的情況
	//不允許同一個(gè)端口在不同IP下重復(fù)監(jiān)控
	char?opt?=?0;
	setsockopt(sockSvr,?SOL_SOCKET,?SO_REUSEADDR,?(const?char?*)&opt,?sizeof(opt));
	//SO_REUSEADDR?為true?就是允許在相同的端口不同的IP地址上創(chuàng)建套接描述字。

	SOCKADDR_IN?addrSvr;
	ZeroMemory(&addrSvr,?sizeof(SOCKADDR_IN));
	addrSvr.sin_family?=?AF_INET;
	addrSvr.sin_port?=?htons(port);
	addrSvr.sin_addr.S_un.S_addr?=?htonl(INADDR_ANY);
	int?nRet?=?bind(sockSvr,?(SOCKADDR*)&addrSvr,?sizeof(SOCKADDR));
	if(SOCKET_ERROR?==?nRet)
	{
		WSACleanup();
		return?IOCP_BIND_ERROR;
	}
	nRet?=?listen(sockSvr,?MaxListen);//500:max?number?of?connect?request
	if(SOCKET_ERROR?==?nRet)
	{
		WSACleanup();
		return?IOCP_LISTEN_ERROR;
	}



不管從哪個(gè)網(wǎng)卡來的連接都可以接入到本端口,這樣服務(wù)器就不用管當(dāng)前監(jiān)控的IP地址了,也不會出現(xiàn)端口劫持問題了。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉