gpt4 book ai didi

c - 套接字上的 select() (问题)

转载 作者:行者123 更新时间:2023-11-30 14:31:12 25 4
gpt4 key购买 nike

最近我做了this代码的一部分。

它确实有效,但 select() 效果不好。
当它收到服务器的最后回复时,它开始重复最后的回复字符串,并在回复字符串的开头添加一些奇怪的字符。那么看看这个:

:nacbot!monitor@nac.bot PRIVMSG testuser1 :VERSION
�C���C��monitor@nac.bot PRIVMSG testuser1 :VERSION
�C���C��monitor@nac.bot PRIVMSG testuser1 :VERSION
�C���C��monitor@nac.bot PRIVMSG testuser1 :VERSION
�C���C��monitor@nac.bot PRIVMSG testuser1 :VERSION

第一个字符串是服务器的最后回复。所以接下来的字符串只是一些垃圾。我尝试在一些搜索引擎中查找信息,但没有成功。

最佳答案

这不是 select 有问题,而是代码中的逻辑有问题(毫不奇怪)。

如果 select 由于 stdin 可读而返回,那么您仍然会查看 c[0] (来自上次服务器读取) - 即使您没有读取这次从服务器来看,它仍然是 \n,因为您从未重置它。

移动这段代码:

    if (c[0] == '\n' || c[0] == '\0') {                                        
buf[--buflen] = '\0';
handleMessage(buf, buflen); /* Just print message */
buf_do_clean = 1;
}

else if (rc == 1) { block 内。

关于c - 套接字上的 select() (问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1859093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com