C ++的输入流是否有可能从像msn,yahoo这样的聊天室中读取并返回某种消息? 只是想知道我搜索网络,其中大部分需要客户端和服务器。
我是这个
的新手答案 0 :(得分:3)
没有;这两个概念只有相似之处。
简而言之,它们是粉笔和奶酪。
通过iostream工具提供对套接字的访问已有名义上的努力,该工具旨在以这种方式进行扩展。然而,这些库从未在主流C ++编程中获得显着的吸引力。即使他们拥有,他们仍然需要很长时间才能实现像XMPP一样复杂的协议。
答案 1 :(得分:0)
是的,如果你能找到(或写)一个库来实现这种抽象。
正如Marcelo所说,聊天服务等使用复杂的协议进行操作。但是关于stdio和文件流可以说类似的东西 - 写入文件或文本模式显示有很大的复杂性(甚至没有提到GUI中的控制台窗口)。大多数复杂性已经被操作系统和标准库抽象出来了。
仍然可以编写一个库来抽象出大多数复杂性。然后,该库可以提供充当输入和/或输出流的对象,遵循与标准流相同的约定,并继承相同的基础。
这可能是一个很好的方法,但AFAIK很少见。也许我错了 - 我从来没有为这种事情编程。但如果我是对的,可能的原因是库经常被编写为与C和C ++兼容。
此外,即使在C ++程序员中,流抽象并不总是被认为是一个很好的特性。很多人都希望将它们限制为stdio和文件I / O,并且不会将流识别为更一般的抽象。
顺便说一句 - 这与马塞洛斯的回答并不矛盾。 “如果你能找到(或写一个)图书馆”是一个很大的问题。
答案 2 :(得分:0)
您可以创建一些类,例如MY_CLIENT。 在这个类中,您需要实现函数
std::streamsize write( const char *s, std::streamsize n );
std::streamsize read( char* s, std::streamsize n );
在这些功能中,您需要实现聊天室逻辑协议,如何发送数据和读取。
查看boost::iostreams
库之后。有了它,你可以写如:
boost::iostreams::stream< MY_CLIEN> my_chat_stream;
my_chat_stream可用作std::istream, std::ostream
用于您的程序,所有c ++流程都有机会