Indy9的问题 IdTCPServer接收数据不是阻塞式

imho888 2008-06-20 05:11:14
为什么我的IdTCPServer接收数据不是阻塞式呢?

函数:IdTCPServer1Execute(AThread: TIdPeerThread);里不管有没有数据接收都不停的运行.

是不是哪边需要设置一下,非常感谢!



...全文
224 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
喝口水 2008-06-26
  • 打赏
  • 举报
回复
接分,
imho888 2008-06-25
  • 打赏
  • 举报
回复
看来世道不行了
imho888 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zzflover 的回复:]
Indy是阻塞式(Blocking)的
当你使用Winsock开发网络应用程序时,从Socket中读取数据或者向Socket写入数据都是异步发生的,这样就不会阻断程序中其它代码的执行。在收到数据时,Winsock会向应用程序发送相应的消息。这种访问方式被称作非阻塞式连接,它要求你对事件作出响应,设置状态机,并通常还需要一个等待循环。
[/Quote]



[Quote=引用 5 楼 blazingfire 的回复:]
...
你在IdTCPServer.OnExecute事件里,要对接收的信息加以验证,不是你要的信息就丢包(Exit)就行了
[/Quote]

IdTCPServer1Execute(AThread: TIdPeerThread);里不管有没有数据接收都不停的运行.

这才是我的问题。请看清楚问题。

INDY demo 里的TCP Chat 就是有数据才触发的。



blazingfire 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 unsigned 的回复:]
引用 2 楼 imho888 的回复:
那什么叫阻塞式呢?

阻塞式,就是一个人“一根筋”式的兢兢业业地干某一件事,直到干完,中途没干完之前,不吃饭不睡觉不上厕所...
[/Quote]
:)

[Quote=引用 2 楼 imho888 的回复:]
那什么叫阻塞式呢? g
[/Quote]
简单的说就是,线程一直试着去作某一件事件(比方说:TidTcpServer读一段数据操作),如何没有成功线程一般采取这样的方式
while not (事件作好) do
begin
等待一段时间(Sleep(...),当然也可能不等待);
试着再作
end;

作为一个健状态的程序(象TCP/IP协议就是这样),一般都还有一个监控程序,去看看时间是否超过了,如果超时,也会写想应的超时标识,
然后退出,大概的模型
如下:
while not (事件作好) and (时间还没有到) do
begin
等待一段时间(Sleep(...),当然也可能不等待);
试着再作
end;

僵哥 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 imho888 的回复:]
那什么叫阻塞式呢?
[/Quote]
阻塞式,就是一个人“一根筋”式的兢兢业业地干某一件事,直到干完,中途没干完之前,不吃饭不睡觉不上厕所...
blazingfire 2008-06-24
  • 打赏
  • 举报
回复
IdTCPServer接收是在线程环境里执行的并且是以阻塞的方式运行的。
你说的“不管有没有数据接收都不停的运行”,可能是其它的一些程序向你的IdTCPServer发送的信息,所以
你在IdTCPServer.OnExecute事件里,要对接收的信息加以验证,不是你要的信息就丢包(Exit)就行了
7年 2008-06-24
  • 打赏
  • 举报
回复
Indy是阻塞式(Blocking)的
当你使用Winsock开发网络应用程序时,从Socket中读取数据或者向Socket写入数据都是异步发生的,这样就不会阻断程序中其它代码的执行。在收到数据时,Winsock会向应用程序发送相应的消息。这种访问方式被称作非阻塞式连接,它要求你对事件作出响应,设置状态机,并通常还需要一个等待循环。
imho888 2008-06-24
  • 打赏
  • 举报
回复
晕,没人知道?

以前在CSDN看到过,现在找不到了。

imho888 2008-06-23
  • 打赏
  • 举报
回复
那什么叫阻塞式呢? g
noelse520 2008-06-20
  • 打赏
  • 举报
回复
它是多线程,你管它是不是接过不停!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧