請問TServerSocket元件有多個Client連線且同時傳送資料的問題。 |
缺席
|
nady
一般會員 發表:8 回覆:6 積分:2 註冊:2002-11-12 發送簡訊給我 |
各位前輩們,您好:
小弟遇到一個不解的問題
我的程式是一個TCP/IP Server的程式,元件是用TServerSocket來做的。
在我的Form上有一個TXMLDocument的元件,是用元件列拉下來的。(不是動態產生),所以只有一個。 我要實作的功能是當ClientSocket連線上來會傳送一個XML的字串。我需要用到Form上的這個元件TXMLDocument幫我Parsing這個字串。
但是我的問題來了:因為我是在ServerSocket的OnClientRead事件中用Form上的元件Parsing收到的字串,所以如果同時有很多個Client連線上來且同時傳送XML字串,那麼OnClientRead事件是會同時觸發?還是依序觸發? 如果不幸的是同時觸發(BCB的ServerSocket是用Thread寫的嗎?),那麼會不會在第一個連線的字串已經載入TXMLDocument,且正在處理時,第二個連線的字串又載入TXMLDocument中?導致處理錯誤呢? 以下是我的程式片段,還請前輩們指導。謝謝 void __fastcall TMonServer::ServerSocketClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
//解析由Client送來的指令內容
AnsiString DevXmlStr;
WideString DevXmlWStr;
DevXmlStr = Socket->ReceiveText();
DevXmlWStr = DevXmlStr; //就是在這裡會不會有可能第二個連線的字串,又載入XMLDoc元件中?
XMLDoc->LoadFromXML(DevXmlWStr); if(XMLDoc->IsEmptyDoc())
{
ShowMessage("Load XML Document from file failed!");
return;
} _di_IXMLNode m_diDEV;
_di_IXMLNode m_diDATA; /*
DEV..........................................根目錄
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |