線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2247
推到 Plurk!
推到 Facebook!

我寫Server AP用Thread開啟Port ,多人連線時易當掉,發現Windows自已開別Port了,是否可調整Thread最大數量或Port記憶體調大?

 
alex0115sr
一般會員


發表:2
回覆:2
積分:0
註冊:2006-11-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-02 11:36:04 IP:61.219.xxx.xxx 訂閱
我用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-05 21:38:02 IP:60.248.xxx.xxx 訂閱
學生????

Listen Port一般只接受Client連入要求
當獲准後Server會分配另一個Port給此連線以為溝通

網路通訊觀念要加強一下喔!!!!
到書店買書看看吧
系統時間:2024-04-27 11:14:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!