現在、 TIdTCPServerおよびTIdTCPClient Indy コンポーネントを使用してサーバーとクライアントを完全に作成することに成功していますが、2 つのクライアントが同時にサーバーに接続すると問題が発生しました。私には 2 つのネットワークが192.168.10.23
ありlocalhost
、クライアントが localhost を使用して接続する場合は問題なく、2 番目のクライアント192.168.10.23
は最初のクライアントの切断を待ってそこに接続しようとします。
Indy10 を使用して複数のクライアントを処理する方法を教えてください。
追加した:
この私のコード:
void __fastcall TfrmServer::TCPServerConnect(TIdContext *AContext)
{
TList *list = TCPServer->Contexts->LockList();
try
{
for (int j=0; j < list->Count; j++)
{
TIdContext *myContext = static_cast<TIdContext*>(list->Items[j]);
CLIENT_AUTH(myContext);
INFO_CLIENT *br = ((INFO_CLIENT*)brb);
br->ClientIP = myContext->Binding()->IP;
br->ClientPort = myContext->Binding()->Port;
br->peerIp = myContext->Binding()->PeerIP;
br->peerPort = myContext->Binding()->PeerPort;
if (myContext->Connection->Connected())
{
for (int i=0; i < list->Count; i++)
{
ListIt = ListClient->Items->Add();
ListIt->Caption = String(i+1); // number
ListIt->SubItems->Add(br->UserName); // Name
ListIt->SubItems->Add(br->ClientIP); // Ip
ListIt->SubItems->Add(br->peerIp); // Peer Ip
ListIt->SubItems->Add(br->ClientPort); // port
ListIt->SubItems->Add(br->peerPort); // port
ListIt->SubItems->Add("Connected"); // Status
}
}
}
}
__finally
{
TCPServer->Contexts->UnlockList();
}
}
このコードは複数のクライアントをサポートしていましたか?