在一个Form里有2个TClientSocket:Client1和Client2,属性都设置一样.在2个都Open后,只有后面Open的一个能在OnRead中接收到服务器的数据,为什么??
怎么样才能2个都接收到数据?谢谢!

解决方案 »

  1.   

    可能有属性设置不对,建议弄个小例子研究一下,DEMO网上应该不少吧
      

  2.   

    遗憾的是我不知服务器是用什么实现的,2个Client属性一样,那服务器怎么区别呢?例如Client端的每一个Socket一般都有一个本地的Port,而TClientSocket却没有这个属性
      

  3.   

    现在都不使用这个的
    都改用Indy的_____________________
    http://lysoft.7u7.net
      

  4.   

    ClientSocket会自动分配端口
    当你连接服务器的时候
    ServerSocket OnClientRead()ServerSocketClientRead(Sender: TObject;Socket: TCustomWinSocket);
    begin
     Socket.RemoteAddress   //远程ip,也就是客户端ip
     Socket.RemotePort      //远程端口
    end;
      

  5.   

    确认下你的两个clientsocket的端口是否都是一样的?
      

  6.   

    谢谢!由于一个Form内要有多个TClientSocket来实现同样的功能,故我不想用拖放控件的形式,因为我要根据一个整数的不同值而调用不同的TClientSocket,而是定义一个数组变量:  ClientSocketTransfer:  Array[0..15] of TClientSocket;然后在动态设置它们的属性和Event处理,不知这样效果是不是跟拖放控件一个样?谢谢!
      

  7.   

    不行,调试运行到每一句属性设置语句都会出错,.???ClientSocketTransfer[i].Active := False;
    ......
    ......
      

  8.   

    ClientSocketTransfer[i].Create(nil);
    这句都会出错,参数该怎么传?谢谢!
      

  9.   

    ClientSocketTransfer[i] := TClientSocket.Create(nil); 
    记得释放就行了