indy中的idtcpserver的问题
我把客户端在线列表保存在一个listview里,点其中一个就可以向他发送消息。模仿demo里的chat修改,但是发送的时候老是出现访问违例。高手指点一下,代码如下:
TList *Clients=new TList;
class TSimpleClient: public TObject
{
public:
AnsiString DNS;
AnsiString Name;
AnsiString IP;
int LastLink;
Pointer Thread;
};
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TCPServerConnect(TIdPeerThread *AThread)
{
TSimpleClient *Client=new TSimpleClient;
Client->DNS=AThread->Connection->LocalName;
Client->Name=AThread->Connection->LocalName;
Client->IP=AThread->Connection->Socket->Binding->PeerIP;
Client->Thread=AThread;
Client->LastLink=ListView1->Items->Count;
TListItem *item;
item=ListView1->Items->Add();
item->Caption=AThread->Connection->Socket->Binding->PeerIP;
item->SubItems->Add(AThread->Connection->LocalName);
AThread->Data=Client;
Clients->Add(Client);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TSimpleClient *Client;
Client=(TSimpleClient *)Clients->Items[ListView1->ItemIndex];
TIdPeerThread(Client->Thread).Connection->WriteLn("111");
}
//---------------------------------------------------------------------------
TList *Clients=new TList;
class TSimpleClient: public TObject
{
public:
AnsiString DNS;
AnsiString Name;
AnsiString IP;
int LastLink;
Pointer Thread;
};
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TCPServerConnect(TIdPeerThread *AThread)
{
TSimpleClient *Client=new TSimpleClient;
Client->DNS=AThread->Connection->LocalName;
Client->Name=AThread->Connection->LocalName;
Client->IP=AThread->Connection->Socket->Binding->PeerIP;
Client->Thread=AThread;
Client->LastLink=ListView1->Items->Count;
TListItem *item;
item=ListView1->Items->Add();
item->Caption=AThread->Connection->Socket->Binding->PeerIP;
item->SubItems->Add(AThread->Connection->LocalName);
AThread->Data=Client;
Clients->Add(Client);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TSimpleClient *Client;
Client=(TSimpleClient *)Clients->Items[ListView1->ItemIndex];
TIdPeerThread(Client->Thread).Connection->WriteLn("111");
}
//---------------------------------------------------------------------------
...全文
相关推荐
idtcpserver.rar
本文将详细讲解如何使用Indy 10中的IDTCPServer组件来构建服务器端,并处理客户端连接、断开以及解决断开时可能出现的错误问题。
idtcp 例子(indy 10)
在你提供的信息中,“idtcp 例子”是指使用 Indy 10 库中的 IDTCPClient 和 IDTCPServer 组件进行客户端-服务器通信的一个示例。
delphi_idtcpserver断开与连接客户端
在Delphi编程环境中, Indy(Internet Direct)是一个强大的网络组件库,其中IDTCPServer是用于构建服务器端应用程序的关键组件。
delphi IdTCPServer文件传输
在Delphi编程环境中,IdTCPServer组件是 Indy(Internet Direct)库的一部分,用于构建TCP服务器应用程序。
INDY控件使用指南
为了解决这个问题,Indy(Internet Direct)组件套件提供了一个名为`TIdAntiFreeze`的特殊组件。


网络及通讯开发
