我负责开发一个客户端,服务端那边可以支持多个客户线程。现在我想动态的生成客户端连接,想生成几个连接就几个连接。比如可能需要发送很多数据给服务端,一个连接太慢,那我就生成10个连接。而平时数据量少,那就1个连接。可以用控件IdTcpClient或者D自带的TcpClient~

解决方案 »

  1.   

    可以动态生成啊,有什么问题吗?
    ClientSocket:=TClientSocket.Create(nil);
         ClientSocket.Host:='127.0.0.1';
         ClientSocket.Port:=1000;
         
         ClientSocket.OnConnect := Socket_Connect;
         ClientSocket.OnError := Socket_Err;
         ClientSocket.OnRead:=ClientSocketRead;
    ......
      

  2.   

    可以生成多个,这是没有问题的,关键是多线程同步的问题,
    例如:如果想从你的客户端传 100MB 的数据到服务器,那么就开10 个线程每个线程 10 MB 那么客户端就不仅仅要处理文件数据包的拆分了,并且,服务器端还要处理数据包的合并,如果楼主的数据都没有什么相关性的话,那么我觉得最难的地方还是多线程的同步问题.
      

  3.   

    感谢各位支持,说明一下,各个通讯包是独立的,没有相关联系。所以不存在数据包的拆分与合并的问题。我就是想以一个合理科学的方法实现多个客户端线程,想请教各位怎样设计比较合适?还有现有的控件如IdTcpClient或者D自带的TcpClient有没有现成的这样的功能?
      

  4.   

    弄个数组来保存10个clientsocket就行了,如果没有建立的clientsocket,数组元素就置为空,调用的时候判断一下。