我需要實現與TIdTCPServer
組件的TCP Server
連接。 我已經做了GUI
(拖動&下降)及其工作。但我需要分割形式和TCP
實現。我見過的示例代碼總是使用TIdTCPServer
作爲TForm
類的成員(拖放結果)。C++ Builder - 用TIdTCPServer以編程方式創建TCP服務器連接
我怎麼稱呼TCPConnection
類,我已經從TForm的
TCPConnection CConnection = new TCPConnection(Owner, this);
這裏實行的是我如何努力創建TCP Server
連接。
TCPConnection::TCPConnection(TComponent* Owner, TForm4* TSuperForm){
IdTCPServer1 = new TIdTCPServer(Owner);
IdTCPServer1->Bindings->Clear();
//IdTCPServer1->Bindings->Add()->SetBinding("10.10.2.103", 774);
IdTCPServer1->OnConnect = (TIdServerThreadEvent)(&OnConnect);
IdTCPServer1->OnExecute = (TIdServerThreadEvent)&OnExecute;
IdTCPServer1->OnDisconnect = (TIdServerThreadEvent)&OnConnect;
IdTCPServer1->OnException = (TIdServerThreadExceptionEvent)&OnException;
IdTCPServer1->DefaultPort = 774;
IdTCPServer1->Bindings->Add();
IdTCPServer1->Bindings->Items[0]->IP="10.10.2.103";
IdTCPServer1->Bindings->Items[0]->Port=774;
IdTCPServer1->ListenQueue = 15;
IdTCPServer1->MaxConnections = 15;
IdTCPServer1->TerminateWaitTime = 5000;
IdTCPServer1->Active = true;
this->TSuperForm = TSuperForm;
}
到目前爲止,代碼工作。但是,當我試圖達到的情況下,連接丟失和throws
異常
void TCPConnection::OnConnect(TIdContext *AContext){
String IP = AContext->Binding()->PeerIP;
}
void TCPConnection::OnException(TIdContext *AContext, Exception *AException)
{
ShowMessage("Error:" + AException->ToString());
}
Error
說:TIdTaskThreadWork
(我將修改錯誤,可能是錯誤的) 如果我不嘗試達到AContext,連接保持沒有問題。
可能是一些關於線程,鎖定列表,...
有什麼建議?
通常不需要訪問'Bindings'屬性,除非你只想在一個特定的接口上服務。只需設置DefaultPort。 – Roddy