答案 0 :(得分:3)
答案 1 :(得分:2)
答案 2 :(得分:1)
答案 3 :(得分:0)
data += recvbuf;
这不起作用。 string::operator+=
无法知道已收到多少字节。这个函数需要一个C风格的字符串,而不是一个任意的字节块。
但是你也有一个非常基本的设计问题。您希望您的程序能够说出IRC协议,但它不包含该协议的任何实现。例如,IRC协议指定了消息分隔的特定方式,并且您没有任何代码可以解析这些消息。
因此,从读取到写入的过渡基本上是由TCP定时的变幻莫测以及服务器选择如何分割其输出所确定的随机时间。由于服务器被允许对其输出进行分段,但它很高兴(协议很清楚客户端不能依赖分段来解析协议,而是必须依赖于面向行的性质),程序的行为是不可预测的。