gpt4 book ai didi

c - Unix ipc 服务器在一个客户端停止后停止

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

我有一个简单的 ipc 程序。服务器生成一个随机数,并从标准输入读取多个客户端。每个客户端都会向服务器发送随机数,直到他们猜出服务器的号码。当超过 n/2 个客户端猜出数字时,服务器停止。我的问题是服务器在第一个客户端猜测数字后停止。

服务器代码:

int i=0; // the number of clients who guessed the number
srand(getpid());
numarul = rand() % 20;
printf("Numarul generat este %d \n",numarul);
for(;;){
if(msgrcv(coadaId,&mesg,sizeof(Mesaj),1,0)<0) // read the mesage from queue
printf("Eroare la receptionarea mesajului.");
else{
printf("Am primit numarul %d \n", mesg.nr);
if(mesg.nr == numarul){
i++; // is the number is guessed
printf("S-a ghicit numarul de la %d clienti \n",i);
mesg.val=1;} // msg.val = 1 if number is guessed
mesg.tip=2; // change the message type
msgsnd(coadaId,&mesg,sizeof(Mesaj),0); // send the msg.val . if 1 client stops
mesg.val=0;
if(i>n/2)break; // the loop ends when i is bigger than half number of clients
}
}

客户端代码:

mesg1.val=0;
srand(getpid());
while(mesg1.val!=1){
mesg1.nr = rand() % 20; // generates number
mesg1.tip=1; // type = 1
if(msgsnd(coadaId,&mesg1,sizeof(Mesaj),0)<0) // sends message to queue
printf("Eroare la trimiterea mesajului:");
msgrcv(coadaId,&mesg1,sizeof(Mesaj),2,0); // reads message from the server
if(mesg1.val==1)exit(0); // if the number is guessed quit
}

谢谢

最佳答案

尽管算术运算符优先于相等运算符,但使用括号来提高清晰度仍然是一个好主意。

关于c - Unix ipc 服务器在一个客户端停止后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10839864/

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