有关Indy的TIDTCPServer组件的问题,个人经验不足,请有这方面的高手帮忙,具体问题请进入。

喜欢编程朋友 2007-10-07 06:06:43

我现在要做一个网络通讯实时接收数据的软件,客户端有80台,服务器端准备用indy的TIDTCPServer。但是我以前没有做过这方面的开发,所以在经验上还有很多的不足,并且现在时间很急,想请高手帮忙解答。

据说TIDTCPServer是阻塞式多线程的,针对一个客户端连接就在服务器端建立一个线程,并且据说封装的相当好。
但是我有一个问题不太明白,就是多个客户端连接到TIDTCPServer组件上之后,在服务器端要建立多个线程,那么TIDTCPServer.OnExecute事件是不是也是多个呀?
是不是每个连接的OnExecute事件都是互相独立的?还是所有连接都公用一个OnExecute事件呀??
如果是所有连接公用一个OnExecute事件,那么数据分析会不会冲突呢??

不知道我的意思描述清楚了吗,我是第一次接触indy的TIDTCPServer,请大家不要见笑。多谢指导!!
我的QQ:253120114,请高手加入我的QQ,咱们具体可以在QQ详谈!!期待你们加入!跪求
...全文
103 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
谢谢,各位朋友的支持,我已经几乎明白了这个。
我想问一下,要检测客户端是否断线了,如何来实时发现网络已经断了?
但是,网上很多人说定时向对方发送测试包。不知道还有没有更好的办法。
如果要发送测试包,一般情况下要多长时间发一次测试包呢???
回复
大大怪老张 2007-10-11
执行代码是一份,但是用户数据是各自有一份。understand?
回复
halfdream 2007-10-10
1,当然会冲突.为什么要使用全局的BUF? 把BUF定义成局部变量,就各线程各用各的了.
如果一定存在可能冲突的东西,使用临界区等方式来互斥并发冲突.
2,因为是多线程,一个OnExecute在执行中,其它的OnExecute还是能够触发的.
回复
是的,但是还有一个问题,
1、就是,假设有100个客户端同时向服务器发送数据,而OnExecute事件是接收数据后写到全局的Buf里面。那不是这100个客户端同时来执行OnExecute这一个代码了吗???这样同时向全局buf写数据,会不会冲突呢。这个怎么处理???
2、假设第一个连接发送数据比较大,那么第一个连接触发了OnExecute事件正在处理数据还没处理完呢,此时又有几连接向服务器发送数据了,还会及时触发OnExecute事件呢?还是等第一个连接处理完数据后,其他连接才触发这个Onexecute事件。
回复
wusongping 2007-10-09
我说的意思是 都执行同一个 onexecute 事件 但里面的 athread 不一样 代表不同线程
回复
楼上的,我没理解你说的啥意思?应该客户端连接触发OnConnect事件。客户端发送数据时触发OnExecute事件。但是,处理数据是在OnExecute里面处理的。但是我不明白是针对每一个客户端有自己的OnExecute事件吗?还是所有客户端公用一个OnExecute事件呀??
回复
llwei 2007-10-08
所有客户端共用一个OnExecute事件,通过上下文CONTEXT进行区分每个连接.
回复
imho888 2007-10-08
晕死,怎么会有两条??????????????????
回复
imho888 2007-10-08
其实每个用户端发送数据到服务器,服务器都会执行OnExecute,也就是说都会执行同一段代码,只是参数AThread不一样,也就是线程不一样。可以通过AThread来判断处理。
回复
imho888 2007-10-08
其实每个用户端发送数据到服务器,服务器都会执行OnExecute,也就是说都会执行同一段代码,只是参数AThread不一样,也就是线程不一样。可以通过AThread来判断处理。
回复
wusongping 2007-10-08
onexecute 是客户端连接上服务端以后触发的事件,每个客户端连上来相当与一个athread,然后针对每个客户端编程
回复
luxuewei5214 2007-10-08
其实是执行同样的代码的
回复
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

1565

社区成员

Delphi 网络通信/分布式开发
申请成为版主
社区公告
暂无公告