高分提问,谢谢大家。

delphi_user 2002-04-02 01:08:08
首先给大家问好。
是这样的,我做的软件中涉及到一些网络通讯问题。首先,客户端向服务器发送一个固定协议的字符流,然后等待服务器的应答。然后根据应答来进行相应的处理。
我是这样做的,利用delphi的控件进行通讯。但是我不知道等待函数怎样去做,因为如果做线程吧,他还没等到接受到应答信息,就结束了。如果不用线程,一直循环等待,我觉得对系统资源占用太多,而且控件的读事件响应也很慢,就像死机一样。我是想,在等待的时候,程序不再进行下步操作,直到收到应答或者超时,并且操作者可以随时中断程序。
...全文
76 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphi_user 2002-04-02
  • 打赏
  • 举报
回复
好了,解决了。谢谢chiphead(满脑袋芯片和程序的人) 。
结账。
ChipHead 2002-04-02
  • 打赏
  • 举报
回复
使用WaitFor方法:

if MyListenThread.WaitFor then ......

在MyListenThread结束运行之前(Terminate方法被调用,或者Execute执行完毕之前),WaitFor方法不会返回。这样,你就达到了在收到响应之前暂停主程序执行的目的。
delphi_user 2002-04-02
  • 打赏
  • 举报
回复
To:windindance(风舞轻扬)
我主线程下一步要根据服务器的响应来进行相应的处理,如果线程刚刚开始,就执行主线程的下一步,结果也不对呀。所以,我需要主进程暂停一下,什么也不处理,一直等到线程结束。这样返回值才正确呀。
还有,我是在修改前人留下的程序,改动不能太大。所以,我是做了一个函数,它首先发送一个固定协议字符流到服务器端,然后返回服务器返回的字符流给相应的程序。你能帮我在好好想想么,分不是问题。
hrb_qiuyb 2002-04-02
  • 打赏
  • 举报
回复
你不还是应该使用线程,可以参照一下UNIX下的通讯模式。一定一个守侯进程来监听一个端口,当有请求的时侯,其Fork 一个子进程与请求进程进行通信,而其继续进行守侯。
windindance 2002-04-02
  • 打赏
  • 举报
回复
不想让主进程继续运行?
主进程就是执行程序的进程啊?
不想让主进程继续运行,那就是退出程序了
newwen 2002-04-02
  • 打赏
  • 举报
回复
用ServerSocket和ClientSocket
delphi_user 2002-04-02
  • 打赏
  • 举报
回复
首先谢谢windindance(风舞轻扬)
我知道用线程,你提出方案我用了。但是当这个线程运行之后,主进程还在继续运行,我不想让主进程继续运行,直到线程结束。
还有其他的方法吗???
tanqth 2002-04-02
  • 打赏
  • 举报
回复
同意楼上
delphi_user 2002-04-02
  • 打赏
  • 举报
回复
欢迎大家提出建议,支持一下也好呀。
windindance 2002-04-02
  • 打赏
  • 举报
回复
用线程啊
进行一个循环
直到收到应答或超时活用户终止

5,391

社区成员

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

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