- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 C 中的 select() 制作一个模拟快餐或其他任何东西的客户端服务器。
我有客户随机点 1-5 种“食物”。服务器每 30 秒决定一次。所有客户最喜欢的食物是什么?他为那些客户提供服务,他们关闭连接,其余的,向他们发送消息等待。未服务的客户端再尝试2次,否则他们离开。
我的问题是,如何让服务器每 30 秒检查一次。他们的命令是什么?
我尝试制作一个数组,但我不知道如何让服务器每 30 秒连续“检查”一次。然后将数组设置为0。
伪代码如下:
**client**
patience=0;served=0;
do
{send random 1-5
receieve message. if 1->served=1; if 0, patience++;
}while patience !=3 and served!=1;
if served==1 send -1
else send -2
close connection
**Server**
while(1)
{
serves clients in a concurent manner
select
adds client in socket list
serves client
waits message
if 1-5 adds in vector
//here I don't know how to make it wait for 30 sec.
//If I put sleep(30), it's going to sleep for each client every time. I want it to permanently check every 30 sec and send messages to clients.
send respones(0 or 1, depending on if the max order is the same as the client's)
if -1, thanks for the food
if -2, going somewhere else
close client connection
}
最佳答案
您可能想在循环中尝试 sleep() 函数,它将做的是暂停您的程序那么长的时间,然后执行后面的语句。
sleep(30);
我想这就是你想要的。看看here了解更多关于 sleep 的信息。
你的代码应该是这样的:
for(i=0; i<=100; i++)//Checks 100 times
{
sleep(30);
checkserverforupdate();
}
更新代码:
while(1){//runs infinite times
sleep(30);//pauses here for 30 seconds everytime before/after running the following code
*client**
patience=0;served=0;
do
{send random 1-5
receieve message. if 1->served=1; if 0, patience++;
}while patience !=3 and served!=1;
if served==1 send -1
else send -2
close connection
**Server**
while(1)
{
serves clients in a concurent manner
select
adds client in socket list
serves client
waits message
if 1-5 adds in vector
//here I don't know how to make it wait for 30 sec.
//If I put sleep(30), it's going to sleep for each client every time. I want it to permanently check every 30 sec and send messages to clients.
send respones(0 or 1, depending on if the max order is the same as the client's)
if -1, thanks for the food
if -2, going somewhere else
close client connection
}
}
看看 sleep(30) 会发生什么,程序会暂停 30 秒,然后执行其后编写的代码,如果将其放在 while 循环中,它每次都会等待。
更新 2:
C 中获取当前时间的代码:
/* localtime example */
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "Current local time and date: %s", asctime (timeinfo) );
return 0;
}
更新 3:所以你的代码应该是这样的:
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "Current local time and date: %s", asctime (timeinfo) );
All of your code here
and then get the time again,
time_t rawtime1;
.....
and then you may calculate the difference between them and put a sleep statement as you wish. If the time you want it to pause is in x then,
sleep(x);
return 0;
关于客户端-服务器餐厅模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21202564/
我有一个内容类型餐厅。对于每家餐厅,我想记录他们的菜单。 示例数据如下所示: 饮料 可乐 $4.99 矿泉水 $2.99 鸡尾酒 蓝色泻湖
我想获取 Zomato 中一家餐厅的详细信息。我将它的链接作为输入 ( https://www.zomato.com/mumbai/fantasy-the-cake-shop-kalyan?utm_s
我正在制作一个记录目的地(城市、州、国家、城镇、郊区等)的应用程序。仅使用此信息,我如何检索有关排名最高的企业的信息包括: 购物中心 餐厅 景点 酒店 商店(书店、CD 店等) 他们的价格(如果有的话
我正在尝试解决这个问题:http://acm.tju.edu.cn/toj/showp2886.html 我已经尝试了一些解决方案,我将解释其中的两个。请注意,两者都假设成本(位置)是一个凸函数,这意
我正在开发一个项目,用户可以在餐厅进行预订,但仅限于餐厅允许的日期。餐厅还可以设置特定时间有多少个座位。 因此,餐厅可以提供每周格式的时间表,但也可以提供异常(exception)情况(例如假期)。
ASP.NET MVC 4 网络应用、EF 5、SQL Server 2012 Express、Visual Web Developer 2012 Express、Code First 我有一个地点对
我是一名优秀的程序员,十分优秀!