0
我正在阅读一个套接字,但我不知道有多少元素将到达,因此如果服务器已将所有元素结构数组。如何从recv调用中退出
客户
for(;;){
...
if(strcmp(buf,"!who")==0){
while(recv(sd,name,50,0)>0)
{
printf("%s\n",name);
}
continue;
}
}
服务器
while(recv(sock,msg,1024,0)>0){
if(strcmp(msg,"!who")==0){
if(i==0){
strcpy(msg2,"Nessun giocatore collegato.");
write(sock,msg2,strlen(msg2));
}
else
for(int c=0;c<=i;c++)
write(sock,players[c].name,strlen(players[c].name));
}
}
让您的服务器首先发送一个(固定长度)指示它计划下一次发送多少字节。客户端可以先读取该指标(因为指标是固定长度,客户端知道recv()需要读取多少字节),然后一旦获得该信息,客户端就会知道要读取多少字节接收数组的所有元素 –