我用IdTCPServer写了server,用ListView列出连上的Client,同时用一个TList维护每一个Client的Context列表,TList和ListView的列表是相对应的,也就是说ListView中的第n项对应TList中的第n项,我现在想做的是通过选择ListView中的第n项,对第n个Context进行操作,比如发送一个字符串或者传送一个文件。这样的操作可以放在窗体的一个button onclick事件里吗?也就是在OnClick事件中进行SendCmd或者ReadStream/Write(Stream)这样的操作。这样是不是可以?是不是应该放到相应的OnExecute中呢?在OnExecute中大致应该如何实现相应的代码?
谢谢!

解决方案 »

  1.   

    缺少细节放到buttonclick事件里当然是可以的。但是我不知道你的BUTTON是想实现何种功能呢?不一定非要在OnExecute好好再考虑一下细节吧。
      

  2.   

    当client连接到server的时候把TIdPeerThread保存到你的TThreadList中,然后通过ListView找到相应的TIdPeerThread,这样你的server和client之间就可以通过TIdPeerThread进行通讯了
      

  3.   

    借此帖子请教个问题:
    我用INDY编写了个通信程序,可是当CLIENT连接SERVER时会出现SOCKET ERROR #10061的错误提示,请大侠们帮帮小弟,毕业设计啊,苦恼中.
    CLIENT 程序中:
    IdTCPClient1.Host := edit1.Text;
       IdTCPClient1.Port := 1025;
       if  not IdTCPClient1.Connected then
         begin
           IdTCPClient1.Connect;
           Showmessage('Connect OK !');
         end;SERVER 程序中:
      IdTcpServer1.Active := true;
      IdTcpServer1.DefaultPort := 1025;
        Button1.Enabled := false;
      Button2.Enabled := true;
      Memo1.Lines.Add(Format('IdTcpServer started at localhost:%d',[IdTcpServer1.DefaultPort]));