2011-04-20 79 views
0

我目前正在将小型控制台应用程序转换为TCP服务器/客户端应用程序。客户端将通过任何Telnet客户端连接到服务器,服务器将为每个Telnet连接复制标准控制台界面。用于多线程TCP服务器的TCPStream类

我开始考虑使用我从Beej的网络编程指南中学到的技术 - 接受连接,然后使用fork()将它分离到自己的进程中。但是,我更愿意保持使用流IO(原始控制台应用程序使用cin/cout,使用类似的网络逻辑功能将使转换过程变得更简单)。

我发现了TCPStream类,sockets.h(http://www.gnutelephony.org/doxy/bayonne2/a00215.html)

看来这个类将允许我使用中隐藏带流式IO的服务器。但是,我无法找到使用此类的单个示例,也无法找到关于如何使用fork()的解释。

任何想法?预先感谢您的帮助。

回答

1

我认为你在为森林混淆树木。一个套接字类是你需要做的整体的一小部分,它不值得关注。

如果你的目标只是为了让你的项目工作,那么就使用现有的框架,而不是试图从大型项目中拉出单个类。 POCO有一个TCPServer类,将为您完成90%的工作。 QT,ACE和其他人有类似的课程。关于POCO的文档并不多,但它们确实涵盖了TCPServer,并且您可以从阅读源代码中学到很多东西,如果那是您真正感兴趣的真的

+0

感谢有关POCO的TCPServer课程的信息。它看起来非常有用,并且与我之前使用的其他TCPServer库相比,结构良好。我想我应该在我的问题上更清楚 - 尽管我很欣赏替代方案,但我还是想知道......如何使用此TCPStream类(在sockets.h中)? – BSchlinker 2011-04-20 21:34:34

+0

@BSchlinker - 不完全是你问的。要么你将不得不下载并编译整个Bayonne项目,在你的源代码中包含适当的头文件并链接到它的库文件中...或者将源代码合并到你自己的源文件中。后者不如使用头文件那么简单;你需要相应的cpp文件代码加上它继承的对象的所有代码,它期望的对象作为参数,typedefs,异常等。如果你问我一个大的PITA。 – Duck 2011-04-21 00:18:49

+0

@BSchlinker - 如果你只是想知道如何进行适当的类调用,我也没有找到任何示例,所以你需要从API文档中解开它。总而言之,只是为了使用流操作符而做了很多努力。 – Duck 2011-04-21 00:20:44