我现在要做一个网络通讯实时接收数据的软件,客户端有80台,服务器端准备用indy的TIDTCPServer。但是我以前没有做过这方面的开发,所以在经验上还有很多的不足,并且现在时间很急,想请高手帮忙解答。据说TIDTCPServer是阻塞式多线程的,针对一个客户端连接就在服务器端建立一个线程,并且据说封装的相当好。
但是我有一个问题不太明白,就是多个客户端连接到TIDTCPServer组件上之后,在服务器端要建立多个线程,那么TIDTCPServer.OnExecute事件是不是也是多个呀?
是不是每个连接的OnExecute事件都是互相独立的?还是所有连接都公用一个OnExecute事件呀??
如果是所有连接公用一个OnExecute事件,那么数据分析会不会冲突呢??不知道我的意思描述清楚了吗,我是第一次接触indy的TIDTCPServer,请大家不要见笑。多谢指导!!
我的QQ:253120114,请高手加入我的QQ,咱们具体可以在QQ详谈!!期待你们加入!跪求

解决方案 »

  1.   

    onexecute 是客户端连接上服务端以后触发的事件,每个客户端连上来相当与一个athread,然后针对每个客户端编程
      

  2.   

    楼上的,我没理解你说的啥意思?应该客户端连接触发OnConnect事件。客户端发送数据时触发OnExecute事件。但是,处理数据是在OnExecute里面处理的。但是我不明白是针对每一个客户端有自己的OnExecute事件吗?还是所有客户端公用一个OnExecute事件呀??
      

  3.   

    其实每个用户端发送数据到服务器,服务器都会执行OnExecute,也就是说都会执行同一段代码,只是参数AThread不一样,也就是线程不一样。可以通过AThread来判断处理。
      

  4.   

    其实每个用户端发送数据到服务器,服务器都会执行OnExecute,也就是说都会执行同一段代码,只是参数AThread不一样,也就是线程不一样。可以通过AThread来判断处理。
      

  5.   

    所有客户端共用一个OnExecute事件,通过上下文CONTEXT进行区分每个连接.
      

  6.   

    我说的意思是 都执行同一个 onexecute 事件 但里面的 athread 不一样 代表不同线程
      

  7.   

    是的,但是还有一个问题,
    1、就是,假设有100个客户端同时向服务器发送数据,而OnExecute事件是接收数据后写到全局的Buf里面。那不是这100个客户端同时来执行OnExecute这一个代码了吗???这样同时向全局buf写数据,会不会冲突呢。这个怎么处理???
    2、假设第一个连接发送数据比较大,那么第一个连接触发了OnExecute事件正在处理数据还没处理完呢,此时又有几连接向服务器发送数据了,还会及时触发OnExecute事件呢?还是等第一个连接处理完数据后,其他连接才触发这个Onexecute事件。
      

  8.   

    1,当然会冲突.为什么要使用全局的BUF? 把BUF定义成局部变量,就各线程各用各的了.
    如果一定存在可能冲突的东西,使用临界区等方式来互斥并发冲突.
    2,因为是多线程,一个OnExecute在执行中,其它的OnExecute还是能够触发的.
      

  9.   

    执行代码是一份,但是用户数据是各自有一份。understand?