gpt4 book ai didi

c - 如何实现无限循环

转载 作者:行者123 更新时间:2023-11-30 18:00:19 26 4
gpt4 key购买 nike

实现 IRC 客户端(仍然)。我几乎拥有一切,但今天我注意到,有一个主要问题。
我获取了服务器发送给我的所有数据,但是如果我在显示发送给我的数据后什么也不做,只是等待,我的 while(1) 循环仅检查一次是否还有更多数据要发送接收然后停止。仅当我键入并发送某些内容时才重新启动,而不是在发送我键入的内容后,它会检查套接字上是否有任何数据正在等待并最终显示它。
这显然是错误的,因为在这种情况下,只有当我发送某些内容时,我才会看到之前收到的消息。
这是我的代码:

while(1){    
if((readReady = readReadiness(sockfd))==0){ //nothing to recv
if(((writeReady = writeReadiness(sockfd))>0) && (readReady = readReadiness(sockfd))==0){ //sending is possible
(data sending part...)
}
else
continue; //if there s no data to read and cant send
}
else{ //if there s some data to recv() on the socket buffer
(parsing and receiving data part...)
}
continue;
}

readReadiness()writeReadiness() 使用 select() 检查是否有任何数据要接收或可能发送一些数据。

问题是:如何制作无限循环,即使我什么都不做,也会重复检查是否有任何数据要接收。 ? (while(1) 停止检查,直到我再次发送内容)
我尝试使用 fork(),但我不知道如何使其工作并池化数据,同时仍然让我可以发送/接收和显示它。

最佳答案

在 while(1) 循环中,您可以定期“戳”服务器以获取新内容。响应将更新您的套接字的内容。这将触发套接字缓冲区上有数据需要接收()...

关于c - 如何实现无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10655726/

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