我寫Server AP用Thread開啟Port ,多人連線時易當掉,發現Windows自已開別Port了,是否可調整Thread最大數量或Port記憶體調大? |
|
alex0115sr
一般會員 發表:2 回覆:2 積分:0 註冊:2006-11-26 發送簡訊給我 |
我用BCB寫Client Server AP,用TThread開Windows socket Port 2350 Listen,當Client連線數少時接收傳送都沒有問題,當連線數多或傳檔數量多時,就會造成塞車現象或當掉了,我用Snifer查看網路收送狀況發現Server那台電腦會自動開另外的Port來收Client的資料,造成我的Server AP開的Port就收不到資料,請問各位大大,聽說可以設Windows中Port的記憶體大小,可以增加那個Port容許多一點暫存空間,以不讓Windows自己去開另外的Port????
另外是不是也可以從TThread上將可同時處理的最大執行序數量開大或調大,我發現只要有9個程序等候時,第10個就不能建立了,我的程式就不能再動了,這點有沒有那位大大能回答一下。 謝謝! //--------------------------------------------------------------------------- #include #pragma hdrstop #include "ServerChild.h" #include "DriverApp.h" #pragma package(smart_init) __fastcall DriverApp::DriverApp(bool CreateSuspended) : TThread(CreateSuspended) { } //--------------------------------------------------------------------------- void __fastcall DriverApp::Execute() { if (MSocket.Listen ((char*) port )) {while (MSocket.Accept() ) {ServerChild *ChildProcess = new ServerChild(true); // 這個TThread同時間最多只能9個,超過就不能動了 ,卡住了 ChildProcess->Priority = tpLower; // set the priority lower than normal ChildProcess->socketfd= MSocket.Socketfd; ChildProcess->FreeOnTerminate=true; ChildProcess->Resume(); MSocket.Socketfd = 0; MSocket.Connected = FALSE; } } else { // TCP/IP socket error } } //--------------------------------------------------------------------------- void __fastcall DriverApp::SocketClose() { MSocket.Close(); } //---------------------------------------------------------------------------
------
Alex |
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |