解決time_wait強(qiáng)制關(guān)閉socket
今天我在測(cè)試代碼的時(shí)候,邊開(kāi)邊看電影,服務(wù)端的CPU消耗和內(nèi)存使用讓我挺滿意的
可是過(guò)了一會(huì),在統(tǒng)計(jì)達(dá)到了一定連接后,后來(lái)連接很多無(wú)法登陸。象上公交車(chē),擁
擠不堪無(wú)法上車(chē),用netstat -an查看了下連接狀態(tài),time_wait狀態(tài)的端口非常多
原因就在此了,消耗完系統(tǒng)的端口數(shù),服務(wù)端將就無(wú)法接收新連接,找到問(wèn)題就來(lái)說(shuō)明
time_wait,這個(gè)東西默認(rèn)存活時(shí)間為2分鐘,夠長(zhǎng)的,這點(diǎn)很要命,更多的大家百度下
對(duì)付這個(gè)問(wèn)題,我寫(xiě)了一個(gè)函數(shù),強(qiáng)制關(guān)閉socket,代碼環(huán)境{delphi7+windows xp}
PS:只會(huì)點(diǎn)pascal,其他不熟。
function ForceCloseSocket(DestSock:TSocket):Boolean;
var
NoWait:Boolean;
NLinger:Tlinger;
begin
Result:=False;
NoWait:=False;
if SetSockOpt(DestSock,SOL_SOCKET,SO_DONTLINGER,@NoWait,sizeOf(Boolean))=SOCKET_ERROR then
Result:=False;
NLinger.l_onoff:=1;
NLinger.l_linger:=0;
if SetSockOpt(DestSock,SOL_SOCKET,SO_LINGER,@NLinger,sizeOf(NLinger))=SOCKET_ERROR then
Result:=False else Result:=True;
if CloseSocket(DestSock)=SOCKET_ERROR then Result:=Flase else Result:=True;
end;
Dz編輯器真是頭大,麻煩,這個(gè)是強(qiáng)制關(guān)閉函數(shù),一點(diǎn)心得,與大家分享下,歡迎PM消息批評(píng)指正。
相關(guān)文章
Realtek HD Audio Driver安裝失敗的解決方法
今天是郁悶慘了,先是電腦由于ntoskrnl.exe文件丟失或損壞迫使我重裝系統(tǒng),重裝系統(tǒng)后又出現(xiàn)聲卡驅(qū)動(dòng)無(wú)法安裝,安裝若干遍聲音驅(qū)動(dòng)都提示“安裝Realtek HD Audio Driver失敗”,然后整個(gè)電腦就變成一個(gè)無(wú)聲系統(tǒng)。2008-08-08終于發(fā)現(xiàn)了鼠標(biāo)關(guān)機(jī)后仍然發(fā)光的原因了與關(guān)閉鍵盤(pán)鼠標(biāo)開(kāi)機(jī)功能的方法
終于發(fā)現(xiàn)了鼠標(biāo)關(guān)機(jī)后仍然發(fā)光的原因了與關(guān)閉鍵盤(pán)鼠標(biāo)開(kāi)機(jī)功能的方法...2007-10-10常用字符集編碼詳解(ASCII GB2312 GBK GB18030 unicode UTF-8)
字符常用的編碼,大家可以認(rèn)識(shí)下以后就可以方便確定用什么編碼了2008-12-12重現(xiàn) Office 2007 中的菜單和工具欄的方法
重現(xiàn) Office 2007 中的菜單和工具欄的方法...2007-05-05關(guān)于Google域名的自動(dòng)轉(zhuǎn)向問(wèn)題
關(guān)于Google域名的自動(dòng)轉(zhuǎn)向問(wèn)題...2007-04-04Visual Style中的shellstyle.dll文件修改方法
Visual Style中的shellstyle.dll文件修改方法...2007-05-05收藏的word實(shí)用技巧問(wèn)題解答(實(shí)用)
收藏的word實(shí)用技巧問(wèn)題解答(實(shí)用)...2007-03-03