【发布时间】:2010-06-09 04:09:05
【问题描述】:
关于使用套接字的 C++ 程序流,我有一个相当棘手的问题。
基本上我所拥有的是:一个简单的命令行套接字服务器程序,它侦听套接字并一次接受一个连接。当该连接丢失时,它会打开以供进一步连接。
该套接字通信系统包含在一个类中。该类完全能够接收连接并将接收到的数据镜像到客户端。但是,该类使用非面向对象的 UNIX 套接字。
我的问题是在我的 main() 函数中,我有一行 - 创建该对象实例的那一行。然后对象初始化并等待。但是一旦获得连接,对象的初始化函数就会返回,当这种情况发生时,程序就会退出。在程序退出之前,我如何以某种方式等到该对象被删除?
总结:
- main() 创建对象实例
- 对象监听
- 收到连接
- 对象的初始化函数返回
- main() 退出 (!)
我想要的是 main() 在退出之前以某种方式延迟,直到该对象完成它正在做的事情(也就是它会删除自己)。
有什么想法吗?
【问题讨论】:
-
如果你的主要功能什么都不做,这个对象应该如何运行它的功能?
-
它使用线程吗?你能发布一下 API 的工作原理吗?
-
不,没有线程。我想我会使用阻塞函数(下面是 Jeremy Friesner 在 cmets 中的答案),但我不确定如何在不吃 CPU 的情况下让它阻塞。
标签: c++ sockets program-flow